shinyjs/0000755000176200001440000000000013607010303011732 5ustar liggesusersshinyjs/NAMESPACE0000644000176200001440000000135513606737124013175 0ustar liggesusers# Generated by roxygen2: do not edit by hand export(addClass) export(addCssClass) export(alert) export(click) export(colourInput) export(colourPicker) export(delay) export(disable) export(disabled) export(enable) export(extendShinyjs) export(hidden) export(hide) export(hideElement) export(html) export(info) export(inlineCSS) export(js) export(logjs) export(onclick) export(onevent) export(removeClass) export(removeCssClass) export(reset) export(runExample) export(runcodeServer) export(runcodeUI) export(runjs) export(show) export(showElement) export(showLog) export(toggle) export(toggleClass) export(toggleCssClass) export(toggleElement) export(toggleState) export(updateColourInput) export(useShinyjs) shinyjs/README.md0000644000176200001440000002761713542227616013245 0ustar liggesusers

shinyjs

shinyjs

Easily improve the user experience of your Shiny apps in seconds

Official website · Copyright 2016 Dean Attali

Donate Build Status CRAN version

----- `shinyjs` lets you perform common useful JavaScript operations in Shiny apps that will greatly improve your apps without having to know any JavaScript. Examples include: hiding an element, disabling an input, resetting an input back to its original value, delaying code execution by a few seconds, and many more useful functions for both the end user and the developer. `shinyjs` can also be used to easily call your own custom JavaScript functions from R. **shinyjs is under the AGPL-3 license. For a commercial license, please [contact me](https://deanattali.com/contact). If you find shinyjs useful, please consider supporting its development\!**

# Table of contents - [Demos and tutorials](#demos) - [Overview of main functions](#overview-main) - [Installation](#install) - [How to use](#usage) - [Basic use case - complete working example](#usecase) - [Calling your own JavaScript functions from R](#extendshinyjs) - [FAQ and extra tricks](#faq-tricks) - [More resources](#more-resources)

Demos and tutorials

- [Demo Shiny app](https://deanattali.com/shinyjs/demo) that lets you play around with some of the functionality in `shinyjs`. - [Video of my shinyjs talk](https://deanattali.com/shinyjs-shinydevcon-2016/) (30 min) and the corresponding [presentation slides](https://bit.ly/shinyjs-slides) from the 2016 Shiny Developer Conference. - [Video of my shinyjs talk](https://deanattali.com/shinyjs-user-2016/) (5 min) and the corresponding [presentation slides](https://bit.ly/shinyjs-slides-useR2016) from the 2016 useR Conference.

Overview of main functions

**Note: In order to use any `shinyjs` function in a Shiny app, you must first call `useShinyjs()` anywhere in the app's UI.**
Function Description
show/hide/toggle Display or hide an element (optionally with an animation).
hidden Initialize a Shiny tag as invisible (can be shown later with a call to show).
enable/disable/toggleState Enable or disable an input element, such as a button or a text input.
disabled Initialize a Shiny input as disabled.
reset Reset a Shiny input widget back to its original value.
delay Execute R code (including any shinyjs functions) after a specified amount of time.
alert Show a message to the user.
click Simulate a click on a button.
html Change the text/HTML of an element.
onclick Run R code when a specific element is clicked. Was originally developed with the sole purpose of running a shinyjs function when an element is clicked, though any R code can be used.
onevent Similar to onclick, but can be used with many other events instead of click (for example, listen for a key press, mouse hover, etc).
addClass/removeClass/toggleClass add or remove a CSS class from an element.
runjs Run arbitrary JavaScript code.
extendShinyjs Allows you to write your own JavaScript functions and use shinyjs to call them as if they were regular R code. More information is available in the section "Calling your own JavaScript functions from R" below.
### Functions that help you during Shiny app development
Function Description
runcodeUI+runcodeServer Adds a text input to your app that lets you run arbitrary R code live.
showLog Print any JavaScript console.log() messages in the R console, to make it easier and quicker to debug apps without having to open the JS console.
logjs Print a message to the JavaScript console (mainly used for debugging purposes).
inlineCSS Easily add inline CSS to a Shiny app.
[Check out the shinyjs demo app](https://deanattali.com/shinyjs/demo) to see some of these in action, or install `shinyjs` and run `shinyjs::runExample()` to see more demos.

Installation

To install the stable CRAN version: install.packages("shinyjs") To install the latest development version from GitHub: install.packages("devtools") devtools::install_github("daattali/shinyjs")

How to use

A typical Shiny app has a UI portion and a server portion. Before using most shinyjs functions, you need to call `useShinyjs()` in the app's UI. It's best to include it near the top as a convention. Here is a minimal Shiny app that uses `shinyjs`: library(shiny) library(shinyjs) ui <- fluidPage( useShinyjs(), # Include shinyjs actionButton("button", "Click me"), textInput("text", "Text") ) server <- function(input, output) { observeEvent(input$button, { toggle("text") # toggle is a shinyjs function }) } shinyApp(ui, server) This is how most Shiny apps should initialize `shinyjs` - by calling `useShinyjs()` near the top of the UI. However, if you use shinyjs in any of the following cases: - In Shiny dashboards (built using the `shinydashboard` package) - In Shiny apps that use a `navbarPage` layout - In Rmd documents - In Shiny apps that manually build the user interface with an HTML file or template (instead of using Shiny's UI functions) Then you should see the [*Including shinyjs in different types of apps*](https://deanattali.com/shinyjs/advanced) document. If your Shiny app doesn't fall into any of these categories, then the above code sample should be enough to get your started with including shinyjs in your app.

Basic use case - complete working example

See the [*shinyjs example app walk-through*](https://deanattali.com/shinyjs/example) document for a step-by-step guide on how to add a variety of shinyjs features to a simple app in order to make it more user friendly.

Calling your own JavaScript functions from R

You can also use `shinyjs` to add your own JavaScript functions that can be called from R as if they were regular R functions using `extendShinyjs`. This is only suitable for advanced users who are familiar with JavaScript and wish to facilitate the communication between R and JavaScript. To learn about this feature and see how useful it can be, see the [*extendShinyjs: Calling your own JavaScript functions from R*](https://deanattali.com/shinyjs/extend) document.

FAQ and extra tricks

There are several questions that pop up very frequently in my email or on StackOverflow about "How do I use shinyjs to do \_\_\_?" Here is a list of a few of these common questions with links to a solution that could be useful. Note that all of these require using `extendShinyjs()`. - [How do I show/hide the `shinydashboard` sidebar programmatically?](https://stackoverflow.com/a/31306707/3943160) - [How do I hide/disable a tab?](https://stackoverflow.com/a/31719425/3943160) - [How do I refresh the page?](https://stackoverflow.com/a/34758024/3943160) - [How do I call a JavaScript function from a different JavaScript library?](https://github.com/timelyportfolio/sweetalertR/issues/1#issuecomment-151685005) - [How do I change the values of a `sliderInput`?](https://stackoverflow.com/a/31066997/3943160) - [How do I call JavaScript code and use the return value?](https://stackoverflow.com/a/34728125/3943160) I also keep a long [list of various Shiny tips & tricks](https://deanattali.com/blog/advanced-shiny-tips/) for solving common Shiny problems, many of which make use of shinyjs.

More resources

This document is meant to serve as a high overview of shinyjs. There are three more documents provided in shinyjs to teach you various aspects of the package: - [Including shinyjs in different types of apps](https://deanattali.com/shinyjs/advanced) - [shinyjs example app walk-through](https://deanattali.com/shinyjs/example) - [extendShinyjs: Calling your own JavaScript functions from R](https://deanattali.com/shinyjs/extend) If you need help with shinyjs, a good place to start is to try to get help from the community. I suggest browsing the [shinyjs tag](https://stackoverflow.com/tags/shinyjs) on StackOverflow or asking your own question there. You can also try getting help on the [RStudio Community forums](https://community.rstudio.com/c/shiny). If you still can't get an answer to your question, you can [contact me](https://deanattali.com/contact). However, because of the high volume of support emails I receive daily, I can only provide support for a fee (as part of my [Shiny consulting](http://attalitech.com/)). ## Motivation & alternatives using native Shiny The initial release of this package was announced [on my blog](https://deanattali.com/2015/04/23/shinyjs-r-package/) and discusses these topics. ## Contributions If you have any suggestions or feedback, I would love to hear about it. You can either [message me directly](https://deanattali.com/contact), [open an issue](https://github.com/daattali/shinyjs/issues) if you want to request a feature/report a bug, or make a pull request if you can contribute. I'd like to give special thanks to the Shiny developers, especially [Joe Cheng](http://www.joecheng.com/) for always answering all my Shiny questions. Lastly, if you find shinyjs useful, please consider [supporting me](https://www.paypal.me/daattali/20) for the countless hours I've spent building, documenting, and supporting this package :) shinyjs/man/0000755000176200001440000000000013542227616012524 5ustar liggesusersshinyjs/man/messageFuncs.Rd0000644000176200001440000000314313542227616015437 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/jsFunc-messageFuncs.R \name{messageFuncs} \alias{messageFuncs} \alias{alert} \alias{info} \alias{logjs} \title{Show a message} \usage{ alert(text) info(text) logjs(text) } \arguments{ \item{text}{The message to show. Can be either simple text or an R object.} } \description{ \code{alert} (and its alias \code{info}) shows a message to the user as a simple popup.\cr\cr \code{logjs} writes a message to the JavaScript console. \code{logjs} is mainly used for debugging purposes as a way to non-intrusively print messages, but it is also visible to the user if they choose to inspect the console. You can also use the \code{\link[shinyjs]{showLog}} function to print the JavaScript message directly to the R console. } \note{ \code{shinyjs} must be initialized with a call to \code{useShinyjs()} in the app's ui. } \examples{ if (interactive()) { library(shiny) shinyApp( ui = fluidPage( useShinyjs(), # Set up shinyjs actionButton("btn", "Click me") ), server = function(input, output) { observeEvent(input$btn, { # Change the following line for more examples alert(paste0("The date is ", date())) }) } ) } \dontrun{ # The shinyjs function call in the above app can be replaced by # any of the following examples to produce similar Shiny apps alert("Hello!") alert(text = R.Version()) logjs(R.Version()) } } \seealso{ \code{\link[shinyjs]{useShinyjs}}, \code{\link[shinyjs]{runExample}}, \code{\link[shinyjs]{showLog}} } shinyjs/man/runExample.Rd0000644000176200001440000000135213542227616015134 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/runExample.R \name{runExample} \alias{runExample} \title{Run shinyjs examples} \usage{ runExample(example) } \arguments{ \item{example}{The app to launch} } \description{ Launch a \code{shinyjs} example Shiny app that shows how to easily use \code{shinyjs} in an app.\cr\cr Run without any arguments to see a list of available example apps. The "demo" example is also \href{http://daattali.com/shiny/shinyjs-demo/}{available online} to experiment with. } \examples{ ## Only run this example in interactive R sessions if (interactive()) { # List all available example apps runExample() runExample("sandbox") runExample("demo") } } shinyjs/man/shinyjs.Rd0000644000176200001440000000156313542227616014507 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/shinyjs.R \docType{package} \name{shinyjs} \alias{shinyjs} \alias{shinyjs-package} \title{shinyjs} \description{ Easily improve the user experience of your Shiny apps in seconds } \details{ \code{shinyjs} lets you perform common JavaScript operations that enhance the user experience in applications without having to know any JavaScript. Examples include: hiding an element, disabling an input, resetting an input back to its original value, delaying code execution by a few seconds, and many more useful functions. \code{shinyjs} also includes a colour picker widget, a colour picker RStudio addin, and can also be used to easily run your own custom JavaScript functions from R. View the \href{http://deanattali.com/shinyjs}{shinyjs website} for more details and to see a demo. } shinyjs/man/useShinyjs.Rd0000644000176200001440000000437513606736015015167 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/useShinyjs.R \name{useShinyjs} \alias{useShinyjs} \title{Set up a Shiny app to use shinyjs} \usage{ useShinyjs(rmd = FALSE, debug = FALSE, html = FALSE, showLog = NULL) } \arguments{ \item{rmd}{Set this to \code{TRUE} only if you are using \code{shinyjs} inside an interactive R markdown document. If using this option, view the \href{https://github.com/daattali/shinyjs}{README} online to learn how to use shinyjs in R markdown documents.} \item{debug}{Set this to \code{TRUE} if you want to see detailed debugging statements in the JavaScript console. Can be useful when filing bug reports to get more information about what is going on.} \item{html}{Set this to \code{TRUE} only if you are using \code{shinyjs} in a Shiny app that builds the entire user interface with a custom HTML file. If using this option, view the \href{https://github.com/daattali/shinyjs}{README} online to learn how to use shinyjs in these apps.} \item{showLog}{Deprecated.} } \value{ Scripts that \code{shinyjs} requires that are automatically inserted to the app's \code{} tag. A side effect of calling this function is that a \code{shinyjs} directory is added as a resource path using \link[shiny]{addResourcePath}. } \description{ This function must be called from a Shiny app's UI in order for all other \code{shinyjs} functions to work.\cr\cr You can call \code{useShinyjs()} from anywhere inside the UI, as long as the final app UI contains the result of \code{useShinyjs()}. } \details{ If you're a package author and including \code{shinyjs} in a function in your your package, you need to make sure \code{useShinyjs()} is called either by the end user's Shiny app or by your function's UI. } \examples{ if (interactive()) { library(shiny) shinyApp( ui = fluidPage( useShinyjs(), # Set up shinyjs actionButton("btn", "Click me"), textInput("element", "Watch what happens to me") ), server = function(input, output) { observeEvent(input$btn, { # Run a simply shinyjs function toggle("element") }) } ) } } \seealso{ \code{\link[shinyjs]{runExample}} \code{\link[shinyjs]{extendShinyjs}} } shinyjs/man/inlineCSS.Rd0000644000176200001440000000440013542227616014640 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/inlineCSS.R \name{inlineCSS} \alias{inlineCSS} \title{Add inline CSS} \usage{ inlineCSS(rules) } \arguments{ \item{rules}{The CSS rules to add. Can either be a string with valid CSS code, or a named list of the form \code{list(selector = declarations)}, where \code{selector} is a valid CSS selector and \code{declarations} is a string or vector of declarations. See examples for clarification.} } \value{ Inline CSS code that is automatically inserted to the app's \code{} tag. } \description{ Add inline CSS to a Shiny app. This is simply a convenience function that gets called from a Shiny app's UI to make it less tedious to add inline CSS. If there are many CSS rules, it is recommended to use an external stylesheet.\cr\cr CSS is a simple way to describe how elements on a web page should be displayed (position, colour, size, etc.). You can learn the basics at \href{http://www.w3schools.com/css/}{W3Schools}. } \examples{ if (interactive()) { library(shiny) # Method 1 - passing a string of valid CSS shinyApp( ui = fluidPage( inlineCSS("#big { font-size:30px; } .red { color: red; border: 1px solid black;}"), p(id = "big", "This will be big"), p(class = "red", "This will be red and bordered") ), server = function(input, output) {} ) # Method 2 - passing a list of CSS selectors/declarations # where each declaration is a full declaration block shinyApp( ui = fluidPage( inlineCSS(list( "#big" = "font-size:30px", ".red" = "color: red; border: 1px solid black;" )), p(id = "big", "This will be big"), p(class = "red", "This will be red and bordered") ), server = function(input, output) {} ) # Method 3 - passing a list of CSS selectors/declarations # where each declaration is a vector of declarations shinyApp( ui = fluidPage( inlineCSS(list( "#big" = "font-size:30px", ".red" = c("color: red", "border: 1px solid black") )), p(id = "big", "This will be big"), p(class = "red", "This will be red and bordered") ), server = function(input, output) {} ) } } shinyjs/man/runjs.Rd0000644000176200001440000000145313542227616014157 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/jsFunc-runjs.R \name{runjs} \alias{runjs} \title{Run JavaScript code} \usage{ runjs(code) } \arguments{ \item{code}{JavaScript code to run.} } \description{ Run arbitrary JavaScript code. } \note{ \code{shinyjs} must be initialized with a call to \code{useShinyjs()} in the app's ui. } \examples{ if (interactive()) { library(shiny) shinyApp( ui = fluidPage( useShinyjs(), # Set up shinyjs actionButton("btn", "Click me") ), server = function(input, output) { observeEvent(input$btn, { # Run JS code that simply shows a message runjs("var today = new Date(); alert(today);") }) } ) } } \seealso{ \code{\link[shinyjs]{useShinyjs}} } shinyjs/man/delay.Rd0000644000176200001440000000253413542227616014115 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/delay.R \name{delay} \alias{delay} \title{Execute R code after a specified number of milliseconds has elapsed} \usage{ delay(ms, expr) } \arguments{ \item{ms}{The number of milliseconds to wait (1000 milliseconds = 1 second) before running the expression.} \item{expr}{The R expression to run after the specified number of milliseconds has elapsed.} } \description{ You can use \code{delay} if you want to wait a specific amount of time before running code. This function can be used in combination with other \code{shinyjs} functions, such as hiding or resetting an element in a few seconds, but it can also be used with any code as long as it's used inside a Shiny app. } \note{ \code{shinyjs} must be initialized with a call to \code{useShinyjs()} in the app's ui. } \examples{ if (interactive()) { library(shiny) shinyApp( ui = fluidPage( useShinyjs(), p(id = "text", "This text will disappear after 3 seconds"), actionButton("close", "Close the app in half a second") ), server = function(input, output) { delay(3000, hide("text")) observeEvent(input$close, { delay(500, stopApp()) }) } ) } } \seealso{ \code{\link[shinyjs]{useShinyjs}}, \code{\link[shinyjs]{runExample}} } shinyjs/man/onevent.Rd0000644000176200001440000001052313606734670014476 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/onevent.R \name{onevent} \alias{onevent} \alias{onclick} \title{Run R code when an event is triggered on an element} \usage{ onclick(id, expr, add = FALSE, asis = FALSE) onevent(event, id, expr, add = FALSE, properties = NULL, asis = FALSE) } \arguments{ \item{id}{The id of the element/Shiny tag} \item{expr}{The R expression or function to run after the event is triggered. If a function with an argument is provided, it will be called with the JavaScript Event properties as its argument. Using a function can be useful when you want to know, for example, what key was pressed on a "keypress" event or the mouse coordinates in a mouse event. See below for a list of properties.} \item{add}{If \code{TRUE}, then add \code{expr} to be executed after any other code that was previously set using \code{onevent} or \code{onclick}; otherwise \code{expr} will overwrite any previous expressions. Note that this parameter works well in web browsers but is buggy when using the RStudio Viewer.} \item{asis}{If \code{TRUE}, use the ID as-is even when inside a module (instead of adding the namespace prefix to the ID).} \item{event}{The event that needs to be triggered to run the code. See below for a list of event types.} \item{properties}{A list of JavaScript Event properties that should be available to the argument of the \code{expr} function. See below for more information about Event properties.} } \description{ \code{onclick} runs an R expression (either a \code{shinyjs} function or any other code) when an element is clicked.\cr\cr \code{onevent} is similar, but can be used when any event is triggered on the element, not only a mouse click. See below for a list of possible event types. Using "click" results in the same behaviour as calling \code{onclick}. } \note{ \code{shinyjs} must be initialized with a call to \code{useShinyjs()} in the app's ui. } \section{Event types}{ Any standard \href{http://api.jquery.com/category/events/mouse-events/}{mouse} or \href{http://api.jquery.com/category/events/keyboard-events/}{keyboard} events that are supported by JQuery can be used. The standard list of events that can be used is: \code{click}, \code{dblclick}, \code{hover}, \code{mousedown}, \code{mouseenter}, \code{mouseleave}, \code{mousemove}, \code{mouseout}, \code{mouseover}, \code{mouseup}, \code{keydown}, \code{keypress}, \code{keyup}. You can also use any other non standard events that your browser supports or with the use of plugins (for example, there is a \href{https://github.com/jquery/jquery-mousewheel}{mousewheel} plugin that you can use to listen to mousewheel events). } \section{Event properties}{ If a function is provided to \code{expr}, the function will receive a list of JavaScript Event properties describing the current event as an argument. Different properties are available for different event types. The full list of porperties that can be returned is: \code{altKey}, \code{button}, \code{buttons}, \code{clientX}, \code{clientY}, \code{ctrlKey}, \code{pageX}, \code{pageY}, \code{screenX}, \code{screenY}, \code{shiftKey}, \code{which}, \code{charCode}, \code{key}, \code{keyCode}, \code{offsetX}, \code{offsetY}. If you want to retrieve any additional properties that are available in JavaScript for your event type, you can use the \code{properties} parameter. } \examples{ if (interactive()) { library(shiny) shinyApp( ui = fluidPage( useShinyjs(), # Set up shinyjs p(id = "date", "Click me to see the date"), p(id = "coords", "Click me to see the mouse coordinates"), p(id = "disappear", "Move your mouse here to make the text below disappear"), p(id = "text", "Hello") ), server = function(input, output) { onclick("date", alert(date())) onclick("coords", function(event) { alert(event) }) onevent("mouseenter", "disappear", hide("text")) onevent("mouseleave", "disappear", show("text")) } ) } \dontrun{ # The shinyjs function call in the above app can be replaced by # any of the following examples to produce similar Shiny apps onclick("disappear", toggle("text")) onclick(expr = text("date", date()), id = "date") } } \seealso{ \code{\link[shinyjs]{useShinyjs}}, \code{\link[shinyjs]{runExample}} } shinyjs/man/extendShinyjs.Rd0000644000176200001440000002377413542227616015667 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/extendShinyjs.R \name{extendShinyjs} \alias{extendShinyjs} \title{Extend shinyjs by calling your own JavaScript functions} \usage{ extendShinyjs(script, text, functions) } \arguments{ \item{script}{Path to a JavaScript file that contains all the functions. Each function name must begin with `shinyjs.`, for example `shinyjs.myfunc`. See 'Basic Usage' below.} \item{text}{Inline JavaScript code to use. If your JavaScript function is very short and you don't want to create a separate file for it, you can provide the code as a string. See 'Basic Usage' below.} \item{functions}{The names of the shinyjs JavaScript functions which you defined and want to be able to call using \code{shinyjs}. Only use this argument if you cannot install \code{V8} on your machine. I repeat: do not use this argument if you're able to install \code{V8} on your machine. For example, if you defined JavaScript functions named \code{shinyjs.foo} and \code{shinyjs.bar}, then use \code{functions = c("foo", "bar")}.} } \value{ Scripts that \code{shinyjs} requires in order to run your JavaScript functions as if they were R code. } \description{ Add your own JavaScript functions that can be called from R as if they were regular R functions. This is a more advanced technique and can only be used if you know JavaScript. See 'Basic Usage' below for more information or \href{http://deanattali.com/shinyjs}{view the shinyjs webpage} to learn more. } \note{ You still need to call \code{useShinyjs()} as usual, and the call to \code{useShinyjs()} must come before the call to \code{extendShinyjs()}. The \code{V8} package is strongly recommended if you use this function. If you are deploying your app to shinyapps.io and are using \code{extendShinyjs()}, then you need to let shinyapps.io know that the \code{V8} package is required. The easiest way to do this is by simply including \code{library(V8)} somewhere. This is an issue with shinyapps.io that might be resolved by them in the future -- see \href{https://github.com/daattali/shinyjs/issues/20}{here} for more details. } \section{Basic Usage}{ Any JavaScript function defined in your script that begins with `shinyjs.` will be available to run from R through the `js$` variable. For example, if you write a JavaScript function called `shinyjs.myfunc`, then you can call it in R with `js$myfunc()`. It's recommended to write JavaScript code in a separate file and provide the filename as the \code{script} argument, but it's also possible to use the \code{text} argument to provide a string containing valid JavaScript code. Using the \code{text} argument is meant to be used when your JavaScript code is very short and simple. As a simple example, here is a basic example of using \code{extendShinyjs} to define a function that changes the colour of the page. \preformatted{ library(shiny) library(shinyjs) jsCode <- "shinyjs.pageCol = function(params){$('body').css('background', params);}" shinyApp( ui = fluidPage( useShinyjs(), extendShinyjs(text = jsCode), selectInput("col", "Colour:", c("white", "yellow", "red", "blue", "purple")) ), server = function(input, output) { observeEvent(input$col, { js$pageCol(input$col) }) } ) } As the example above shows, after defining the JavaScript function \code{shinyjs.pageCol} and passing it to \code{extendShinyjs}, it's possible to call \code{js$pageCol()}. You can add more functions to the JavaScript code, but remember that every function you want to use in R has to have a name beginning with `shinyjs.`. See the section on passing arguments and the examples below for more information on how to write effective functions. } \section{Running JavaScript code on page load}{ If there is any JavaScript code that you want to run immediately when the page loads rather than having to call it from the server, you can place it inside a \code{shinyjs.init} function. The function \code{shinyjs.init} will automatically be called when the Shiny app's HTML is initialized. A common use for this is when registering event handlers or initializing JavaScript objects, as these usually just need to run once when the page loads. For example, the following example uses \code{shinyjs.init} to register an event handler so that every keypress will print its corresponding key code: \preformatted{ jscode <- " shinyjs.init = function() { $(document).keypress(function(e) { alert('Key pressed: ' + e.which); }); }" shinyApp( ui = fluidPage( useShinyjs(), extendShinyjs(text = jscode), "Press any key" ), server = function(input, output) {} ) } } \section{Passing arguments from R to JavaScript}{ Any \code{shinyjs} function that is called will pass a single array-like parameter to its corresponding JavaScript function. If the function in R was called with unnamed arguments, then it will pass an Array of the arguments; if the R arguments are named then it will pass an Object with key-value pairs. For example, calling \code{js$foo("bar", 5)} in R will call \code{shinyjs.foo(["bar", 5])} in JS, while calling \code{js$foo(num = 5, id = "bar")} in R will call \code{shinyjs.foo({num : 5, id : "bar"})} in JS. This means that the \code{shinyjs.foo} function needs to be able to deal with both types of parameters. To assist in normalizing the parameters, \code{shinyjs} provides a \code{shinyjs.getParams()} function which serves two purposes. First of all, it ensures that all arguments are named (even if the R function was called without names). Secondly, it allows you to define default values for arguments. Here is an example of a JS function that changes the background colour of an element and uses \code{shinyjs.getParams()}. \preformatted{ shinyjs.backgroundCol = function(params) { var defaultParams = { id : null, col : "red" }; params = shinyjs.getParams(params, defaultParams); var el = $("#" + params.id); el.css("background-color", params.col); } } Note the \code{defaultParams} object that was defined and the call to \code{shinyjs.getParams}. It ensures that calling \code{js$backgroundCol("test", "blue")} and \code{js$backgroundCol(id = "test", col = "blue")} and \code{js$backgroundCol(col = "blue", id = "test")} are all equivalent, and that if the colour parameter is not provided then "red" will be the default. All the functions provided in \code{shinyjs} make use of \code{shinyjs.getParams}, and it is highly recommended to always use it in your functions as well. Notice that the order of the arguments in \code{defaultParams} in the JavaScript function matches the order of the arguments when calling the function in R with unnamed arguments. See the examples below for a shiny app that uses this JS function. } \examples{ \dontrun{ Example 1: Change the page background to a certain colour when a button is clicked. jsCode <- "shinyjs.pageCol = function(params){$('body').css('background', params);}" shinyApp( ui = fluidPage( useShinyjs(), extendShinyjs(text = jsCode), selectInput("col", "Colour:", c("white", "yellow", "red", "blue", "purple")) ), server = function(input, output) { observeEvent(input$col, { js$pageCol(input$col) }) } ) # If you do not have `V8` package installed, you will need to add another # argument to the `extendShinyjs()` function: # extendShinyjs(text = jsCode, functions = c("pageCol")) ============== Example 2: Change the background colour of an element, using "red" as default jsCode <- ' shinyjs.backgroundCol = function(params) { var defaultParams = { id : null, col : "red" }; params = shinyjs.getParams(params, defaultParams); var el = $("#" + params.id); el.css("background-color", params.col); }' shinyApp( ui = fluidPage( useShinyjs(), extendShinyjs(text = jsCode), p(id = "name", "My name is Dean"), p(id = "sport", "I like soccer"), selectInput("col", "Colour:", c("white", "yellow", "red", "blue", "purple")), textInput("selector", "Element", "sport"), actionButton("btn", "Go") ), server = function(input, output) { observeEvent(input$btn, { js$backgroundCol(input$selector, input$col) }) } ) ============== Example 3: Create an `increment` function that increments the number inside an HTML tag (increment by 1 by default, with an optional parameter). Use a separate file instead of providing the JS code in a string. Create a JavaScript file "myfuncs.js": shinyjs.increment = function(params) { var defaultParams = { id : null, num : 1 }; params = shinyjs.getParams(params, defaultParams); var el = $("#" + params.id); el.text(parseInt(el.text()) + params.num); } And a shiny app that uses the custom function we just defined. Note how the arguments can be either passed as named or unnamed, and how default values are set if no value is given to a parameter. library(shiny) shinyApp( ui = fluidPage( useShinyjs(), extendShinyjs("myfuncs.js"), p(id = "number", 0), actionButton("add", "js$increment('number')"), actionButton("add5", "js$increment('number', 5)"), actionButton("add10", "js$increment(num = 10, id = 'number')") ), server = function(input, output) { observeEvent(input$add, { js$increment('number') }) observeEvent(input$add5, { js$increment('number', 5) }) observeEvent(input$add10, { js$increment(num = 10, id = 'number') }) } ) } } \seealso{ \code{\link[shinyjs]{runExample}} } shinyjs/man/hidden.Rd0000644000176200001440000000241413542227616014247 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/hidden.R \name{hidden} \alias{hidden} \title{Initialize a Shiny tag as hidden} \usage{ hidden(...) } \arguments{ \item{...}{Shiny tag (or tagList or list of of tags) to make invisible} } \value{ The tag (or tags) that was given as an argument in a hidden state. } \description{ Create a Shiny tag that is invisible when the Shiny app starts. The tag can be made visible later with \code{shinyjs::toggle} or \code{shinyjs::show}. } \note{ \code{shinyjs} must be initialized with a call to \code{useShinyjs()} in the app's ui. } \examples{ if (interactive()) { library(shiny) shinyApp( ui = fluidPage( useShinyjs(), # Set up shinyjs actionButton("btn", "Click me"), hidden( p(id = "element", "I was born invisible") ) ), server = function(input, output) { observeEvent(input$btn, { show("element") }) } ) } library(shiny) hidden(span(id = "a"), div(id = "b")) hidden(tagList(span(id = "a"), div(id = "b"))) hidden(list(span(id = "a"), div(id = "b"))) } \seealso{ \code{\link[shinyjs]{useShinyjs}}, \code{\link[shinyjs]{toggle}}, \code{\link[shinyjs]{show}}, \code{\link[shinyjs]{hide}} } shinyjs/man/disabled.Rd0000644000176200001440000000240313542227616014561 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/disabled.R \name{disabled} \alias{disabled} \title{Initialize a Shiny input as disabled} \usage{ disabled(...) } \arguments{ \item{...}{Shiny input (or tagList or list of of tags that include inputs) to disable.} } \value{ The tag (or tags) that was given as an argument in a disabled state. } \description{ Create a Shiny input that is disabled when the Shiny app starts. The input can be enabled later with \code{shinyjs::toggleState} or \code{shinyjs::enable}. } \note{ \code{shinyjs} must be initialized with a call to \code{useShinyjs()} in the app's ui. } \examples{ if (interactive()) { library(shiny) shinyApp( ui = fluidPage( useShinyjs(), # Set up shinyjs actionButton("btn", "Click me"), disabled( textInput("element", NULL, "I was born disabled") ) ), server = function(input, output) { observeEvent(input$btn, { enable("element") }) } ) } library(shiny) disabled(numericInput("num", NULL, 5), dateInput("date", NULL)) } \seealso{ \code{\link[shinyjs]{useShinyjs}}, \code{\link[shinyjs]{toggleState}}, \code{\link[shinyjs]{enable}}, \code{\link[shinyjs]{disable}} } shinyjs/man/reset.Rd0000644000176200001440000000373413542227616014144 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/reset.R \name{reset} \alias{reset} \title{Reset input elements to their original values} \usage{ reset(id) } \arguments{ \item{id}{The id of the input element to reset or the id of an HTML tag to reset all input elements inside it.} } \description{ Reset any input element back to its original value. You can either reset one specific input at a time by providing the id of a shiny input, or reset all inputs within an HTML tag by providing the id of an HTML tag.\cr\cr Reset can be performed on any traditional Shiny input widget, which includes: textInput, numericInput, sliderInput, selectInput, selectizeInput, radioButtons, dateInput, dateRangeInput, checkboxInput, checkboxGroupInput, colourInput, passwordInput, textAreaInput. Note that \code{actionButton} is not supported, meaning that you cannot reset the value of a button back to 0. } \note{ \code{shinyjs} must be initialized with a call to \code{useShinyjs()} in the app's ui. } \examples{ if (interactive()) { library(shiny) shinyApp( ui = fluidPage( useShinyjs(), div( id = "form", textInput("name", "Name", "Dean"), radioButtons("gender", "Gender", c("Male", "Female")), selectInput("letter", "Favourite letter", LETTERS) ), actionButton("resetAll", "Reset all"), actionButton("resetName", "Reset name"), actionButton("resetGender", "Reset Gender"), actionButton("resetLetter", "Reset letter") ), server = function(input, output) { observeEvent(input$resetName, { reset("name") }) observeEvent(input$resetGender, { reset("gender") }) observeEvent(input$resetLetter, { reset("letter") }) observeEvent(input$resetAll, { reset("form") }) } ) } } \seealso{ \code{\link[shinyjs]{useShinyjs}}, \code{\link[shinyjs]{runExample}} } shinyjs/man/classFuncs.Rd0000644000176200001440000001020713606734670015123 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/jsFunc-classFuncs.R \name{classFuncs} \alias{classFuncs} \alias{addClass} \alias{addCssClass} \alias{removeClass} \alias{removeCssClass} \alias{toggleClass} \alias{toggleCssClass} \title{Add/remove CSS class} \usage{ addClass(id = NULL, class = NULL, selector = NULL, asis = FALSE) addCssClass(id = NULL, class = NULL, selector = NULL, asis = FALSE) removeClass(id = NULL, class = NULL, selector = NULL, asis = FALSE) removeCssClass(id = NULL, class = NULL, selector = NULL, asis = FALSE) toggleClass(id = NULL, class = NULL, condition = NULL, selector = NULL, asis = FALSE) toggleCssClass(id = NULL, class = NULL, condition = NULL, selector = NULL, asis = FALSE) } \arguments{ \item{id}{The id of the element/Shiny tag} \item{class}{The CSS class to add/remove} \item{selector}{JQuery selector of the elements to target. Ignored if the \code{id} argument is given. For example, to add a certain class to all inputs with class x, use \code{selector = "input.x"}} \item{asis}{If \code{TRUE}, use the ID as-is even when inside a module (instead of adding the namespace prefix to the ID).} \item{condition}{An optional argument to \code{toggleClass}, see 'Details' below.} } \description{ Add or remove a CSS class from an HTML element.\cr\cr \strong{\code{addClass}} adds a CSS class, \strong{\code{removeClass}} removes a CSS class, \strong{\code{toggleClass}} adds the class if it is not set and removes the class if it is already set.\cr\cr \strong{\code{addCssClass}}, \strong{\code{removeCssClass}}, and \strong{\code{toggleCssClass}} are synonyms that may be safer to use if you're working with S4 classes (since they don't mask any existing S4 functions).\cr\cr If \code{condition} is given to \code{toggleClass}, that condition will be used to determine if to add or remove the class. The class will be added if the condition evaluates to \code{TRUE} and removed otherwise. If you find yourself writing code such as \code{if (test()) addClass(id, cl) else removeClass(id, cl)} then you can use \code{toggleClass} instead: \code{toggleClass(id, cl, test())}.\cr\cr CSS is a simple way to describe how elements on a web page should be displayed (position, colour, size, etc.). You can learn the basics at \href{http://www.w3schools.com/css/}{W3Schools}. } \note{ If you use S4 classes, you should be aware of the fact that both S4 and \code{shinyjs} use the \code{removeClass()} function. This means that when using S4, it is recommended to use \code{removeCssClass()} from \code{shinyjs}, and to use \code{methods::removeClass()} for S4 object. \code{shinyjs} must be initialized with a call to \code{useShinyjs()} in the app's ui. } \examples{ if (interactive()) { library(shiny) shinyApp( ui = fluidPage( useShinyjs(), # Set up shinyjs # Add a CSS class for red text colour inlineCSS(list(.red = "background: red")), actionButton("btn", "Click me"), p(id = "element", "Watch what happens to me") ), server = function(input, output) { observeEvent(input$btn, { # Change the following line for more examples toggleClass("element", "red") }) } ) } \dontrun{ # The shinyjs function call in the above app can be replaced by # any of the following examples to produce similar Shiny apps toggleClass(class = "red", id = "element") addClass("element", "red") removeClass("element", "red") } ## toggleClass can be given an optional `condition` argument, which ## determines if to add or remove the class if (interactive()) { shinyApp( ui = fluidPage( useShinyjs(), inlineCSS(list(.red = "background: red")), checkboxInput("checkbox", "Make it red"), p(id = "element", "Watch what happens to me") ), server = function(input, output) { observe({ toggleClass(id = "element", class = "red", condition = input$checkbox) }) } ) } } \seealso{ \code{\link[shinyjs]{useShinyjs}}, \code{\link[shinyjs]{runExample}}, \code{\link[shinyjs]{inlineCSS}}, } shinyjs/man/runcode.Rd0000644000176200001440000000510113542227616014447 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/runcode.R \name{runcode} \alias{runcode} \alias{runcodeUI} \alias{runcodeServer} \title{Construct to let you run arbitrary R code live in a Shiny app} \usage{ runcodeUI(code = "", type = c("text", "textarea", "ace"), width = NULL, height = NULL, includeShinyjs = NULL, id = NULL) runcodeServer() } \arguments{ \item{code}{The initial R code to show in the text input when the app loads} \item{type}{One of \code{"text"} (default), \code{"textarea"}, or \code{"ace"}. When using a text input, the R code will be limited to be typed within a single line, and is the recommended option. Textarea should be used if you want to write long multi-line R code. Note that you can run multiple expressions even in a single line by appending each R expression with a semicolon. Use of the \code{"ace"} option requires the \code{shinyAce} package.} \item{width}{The width of the editable code input (ignored when \code{type="ace"})} \item{height}{The height of the editable code input (ignored when \code{type="text"})} \item{includeShinyjs}{Deprecated. You should always make sure to initialize shinyjs using \code{\link[shinyjs]{useShinyjs}}.} \item{id}{When used inside a shiny module, the module's id needs to be provided to \code{runcodeUI}. This argument should remain \code{NULL} when not used inside a module.} } \description{ Sometimes when developing a Shiny app, it's useful to be able to run some R code on-demand. This construct provides your app with a text input where you can enter any R code and run it immediately.\cr\cr This can be useful for testing and while developing an app locally, but it \strong{should not be included in an app that is accessible to other people}, as letting others run arbitrary R code can open you up to security attacks.\cr\cr To use this construct, you must add a call to \code{runcodeUI()} in the UI of your app, and a call to \code{runcodeServer()} in the server function. You also need to initialize shinyjs with a call to \code{useShinyjs()} in the UI. } \note{ You can only have one \code{runcode} construct in your shiny app. Calling this function multiple times within the same app will result in unpredictable behaviour. } \examples{ if (interactive()) { library(shiny) shinyApp( ui = fluidPage( useShinyjs(), # Set up shinyjs runcodeUI(code = "shinyjs::alert('Hello!')") ), server = function(input, output) { runcodeServer() } ) } } \seealso{ \code{\link[shinyjs]{useShinyjs}} } shinyjs/man/visibilityFuncs.Rd0000644000176200001440000001055213606734670016210 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/jsFunc-visibilityFuncs.R \name{visibilityFuncs} \alias{visibilityFuncs} \alias{show} \alias{showElement} \alias{hide} \alias{hideElement} \alias{toggle} \alias{toggleElement} \title{Display/hide an element} \usage{ show(id = NULL, anim = FALSE, animType = "slide", time = 0.5, selector = NULL, asis = FALSE) showElement(id = NULL, anim = FALSE, animType = "slide", time = 0.5, selector = NULL, asis = FALSE) hide(id = NULL, anim = FALSE, animType = "slide", time = 0.5, selector = NULL, asis = FALSE) hideElement(id = NULL, anim = FALSE, animType = "slide", time = 0.5, selector = NULL, asis = FALSE) toggle(id = NULL, anim = FALSE, animType = "slide", time = 0.5, selector = NULL, condition = NULL, asis = FALSE) toggleElement(id = NULL, anim = FALSE, animType = "slide", time = 0.5, selector = NULL, condition = NULL, asis = FALSE) } \arguments{ \item{id}{The id of the element/Shiny tag} \item{anim}{If \code{TRUE} then animate the behaviour} \item{animType}{The type of animation to use, either \code{"slide"} or \code{"fade"}} \item{time}{The number of seconds to make the animation last} \item{selector}{JQuery selector of the elements to show/hide. Ignored if the \code{id} argument is given. For example, to select all span elements with class x, use \code{selector = "span.x"}} \item{asis}{If \code{TRUE}, use the ID as-is even when inside a module (instead of adding the namespace prefix to the ID).} \item{condition}{An optional argument to \code{toggle}, see 'Details' below.} } \description{ Display or hide an HTML element.\cr\cr \strong{\code{show}} makes an element visible, \strong{\code{hide}} makes an element invisible, \strong{\code{toggle}} displays the element if it it hidden and hides it if it is visible.\cr\cr \strong{\code{showElement}}, \strong{\code{hideElement}}, and \strong{\code{toggleElement}} are synonyms that may be safer to use if you're working with S4 classes (since they don't mask any existing S4 functions).\cr\cr If \code{condition} is given to \code{toggle}, that condition will be used to determine if to show or hide the element. The element will be shown if the condition evaluates to \code{TRUE} and hidden otherwise. If you find yourself writing code such as \code{if (test()) show(id) else hide(id)} then you can use \code{toggle} instead: \code{toggle(id = id, condition = test())}. } \details{ If you want to hide/show an element in a few seconds rather than immediately, you can use the \code{\link[shinyjs]{delay}} function. } \note{ If you use S4 classes, you should be aware of the fact that both S4 and \code{shinyjs} use the \code{show()} function. This means that when using S4, it is recommended to use \code{showElement()} from \code{shinyjs}, and to use \code{methods::show()} for S4 object. \code{shinyjs} must be initialized with a call to \code{useShinyjs()} in the app's ui. } \examples{ if (interactive()) { library(shiny) shinyApp( ui = fluidPage( useShinyjs(), # Set up shinyjs actionButton("btn", "Click me"), textInput("text", "Text") ), server = function(input, output) { observeEvent(input$btn, { # Change the following line for more examples toggle("text") }) } ) } \dontrun{ # The shinyjs function call in the above app can be replaced by # any of the following examples to produce similar Shiny apps toggle(id = "text") delay(1000, toggle(id = "text")) # toggle in 1 second toggle("text", TRUE) toggle("text", TRUE, "fade", 2) toggle(id = "text", time = 1, anim = TRUE, animType = "slide") show("text") show(id = "text", anim = TRUE) hide("text") hide(id = "text", anim = TRUE) } ## toggle can be given an optional `condition` argument, which ## determines if to show or hide the element if (interactive()) { shinyApp( ui = fluidPage( useShinyjs(), checkboxInput("checkbox", "Show the text", TRUE), p(id = "element", "Watch what happens to me") ), server = function(input, output) { observe({ toggle(id = "element", condition = input$checkbox) }) } ) } } \seealso{ \code{\link[shinyjs]{useShinyjs}}, \code{\link[shinyjs]{runExample}}, \code{\link[shinyjs]{hidden}}, \code{\link[shinyjs]{delay}} } shinyjs/man/showLog.Rd0000644000176200001440000000255413542227616014443 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/showLog.R \name{showLog} \alias{showLog} \title{Print any JavaScript console.log messages in the R console} \usage{ showLog() } \description{ When developing and debugging a Shiny that uses custom JavaScript code, it can be helpful to use \code{console.log()} messages in JavaScript. This function allows you to see these messages printed in the R console directly rather than having to open the JavaScript console in the browser to view the messages.\cr\cr This function must be called in a Shiny app's server function, and you also need to pass the \code{showLog=TRUE} parameter to \code{useShinyjs()}. } \note{ Due to an issue in shiny (see https://github.com/rstudio/shiny/issues/928), duplicated consecutive log messages will not get printed in R. Log messages that cannot be serialized in JavaScript (such as many JavaScript Event objects that are cyclic) will not be printed in R. } \examples{ if (interactive()) { library(shiny) shinyApp( ui = fluidPage( useShinyjs(), textInput("text", "Type something") ), server = function(input, output) { showLog() logjs("App started") observe({ logjs(paste("Length of text:", nchar(input$text))) }) } ) } } \seealso{ \code{\link[shinyjs]{logjs}} } shinyjs/man/shinyjs-defunct.Rd0000644000176200001440000000116513542227616016133 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/defunct-colourInput.R, R/shinyjs.R \name{colourInput} \alias{colourInput} \alias{updateColourInput} \alias{colourPicker} \alias{shinyjs-defunct} \title{Defunct functions in shinyjs} \usage{ colourInput(...) updateColourInput(...) colourPicker(...) } \description{ \itemize{ \item{\bold{colourInput()}} {Moved to the \code{colourpicker} package.} \item{\bold{updateColourInput()}} {Moved to the \code{colourpicker} package.} \item{\bold{colourPicker()}} {Moved to the \code{colourpicker} package.} } } \keyword{internal} shinyjs/man/stateFuncs.Rd0000644000176200001440000000645713606734670015152 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/jsFunc-stateFuncs.R \name{stateFuncs} \alias{stateFuncs} \alias{enable} \alias{disable} \alias{toggleState} \title{Enable/disable an input element} \usage{ enable(id = NULL, selector = NULL, asis = FALSE) disable(id = NULL, selector = NULL, asis = FALSE) toggleState(id = NULL, condition = NULL, selector = NULL, asis = FALSE) } \arguments{ \item{id}{The id of the input element/Shiny tag} \item{selector}{Query selector of the elements to target. Ignored if the \code{id} argument is given. For example, to disable all text inputs, use \code{selector = "input[type='text']"}} \item{asis}{If \code{TRUE}, use the ID as-is even when inside a module (instead of adding the namespace prefix to the ID).} \item{condition}{An optional argument to \code{toggleState}. The element will be enabled when the \code{condition} is \code{TRUE}, and disabled otherwise.} } \description{ Enable or disable an input element. A disabled element is not usable and not clickable, while an enabled element (default) can receive user input. Any shiny input tag can be used with these functions.\cr\cr \strong{\code{enable}} enables an input, \strong{\code{disable}} disabled an input,\strong{\code{toggleState}} enables an input if it is disabled and disables an input if it is already enabled.\cr\cr If \code{condition} is given to \code{toggleState}, that condition will be used to determine if to enable or disable the input. The element will be enabled if the condition evaluates to \code{TRUE} and disabled otherwise. If you find yourself writing code such as \code{if (test()) enable(id) else disable(id)} then you can use \code{toggleState} instead: \code{toggleState(id, test())}. } \note{ \code{shinyjs} must be initialized with a call to \code{useShinyjs()} in the app's ui. } \examples{ if (interactive()) { library(shiny) shinyApp( ui = fluidPage( useShinyjs(), # Set up shinyjs actionButton("btn", "Click me"), textInput("element", "Watch what happens to me") ), server = function(input, output) { observeEvent(input$btn, { # Change the following line for more examples toggleState("element") }) } ) } \dontrun{ # The shinyjs function call in the above app can be replaced by # any of the following examples to produce similar Shiny apps toggleState(id = "element") enable("element") disable("element") # Similarly, the "element" text input can be changed to many other # input tags, such as the following examples actionButton("element", "I'm a button") fileInput("element", "Choose a file") selectInput("element", "I'm a select box", 1:10) } ## toggleState can be given an optional `condition` argument, which ## determines if to enable or disable the input if (interactive()) { shinyApp( ui = fluidPage( useShinyjs(), textInput("text", "Please type at least 3 characters"), actionButton("element", "Submit") ), server = function(input, output) { observe({ toggleState(id = "element", condition = nchar(input$text) >= 3) }) } ) } } \seealso{ \code{\link[shinyjs]{useShinyjs}}, \code{\link[shinyjs]{runExample}} \code{\link[shinyjs]{disabled}} } shinyjs/man/html.Rd0000644000176200001440000000371713542227616013767 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/jsFunc-html.R \name{html} \alias{html} \title{Change the HTML (or text) inside an element} \usage{ html(id = NULL, html = NULL, add = FALSE, selector = NULL, asis = FALSE) } \arguments{ \item{id}{The id of the element/Shiny tag} \item{html}{The HTML/text to place inside the element. Can be either simple plain text or valid HTML code.} \item{add}{If \code{TRUE}, then append \code{html} to the contents of the element; otherwise overwrite it.} \item{selector}{JQuery selector of the elements to target. Ignored if the \code{id} argument is given.} \item{asis}{If \code{TRUE}, use the ID as-is even when inside a module (instead of adding the namespace prefix to the ID).} } \description{ Change the text or HTML inside an element. The given HTML can be any R expression, and it can either be appended to the currentcontents of the element or overwrite it (default). } \note{ \code{shinyjs} must be initialized with a call to \code{useShinyjs()} in the app's ui. } \examples{ if (interactive()) { library(shiny) shinyApp( ui = fluidPage( useShinyjs(), # Set up shinyjs actionButton("btn", "Click me"), p(id = "element", "Watch what happens to me") ), server = function(input, output) { observeEvent(input$btn, { # Change the following line for more examples html("element", paste0("The date is ", date())) }) } ) } \dontrun{ # The shinyjs function call in the above app can be replaced by # any of the following examples to produce similar Shiny apps html("element", "Hello!") html("element", " Hello!", TRUE) html("element", "bold that was achieved with HTML") local({val <- "some text"; html("element", val)}) html(id = "element", add = TRUE, html = input$btn) } } \seealso{ \code{\link[shinyjs]{useShinyjs}}, \code{\link[shinyjs]{runExample}} } shinyjs/man/js.Rd0000644000176200001440000000062413542227616013431 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/extendShinyjs.R \docType{data} \name{js} \alias{js} \title{Call user-defined JavaScript functions from R} \format{An object of class \code{environment} of length 0.} \usage{ js } \description{ Call user-defined JavaScript functions from R } \seealso{ \code{\link[shinyjs]{extendShinyjs}} } \keyword{internal} shinyjs/man/click.Rd0000644000176200001440000000225513542227616014104 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/jsFunc-click.R \name{click} \alias{click} \title{Click on a Shiny button} \usage{ click(id, asis = FALSE) } \arguments{ \item{id}{The id of the button} \item{asis}{If \code{TRUE}, use the ID as-is even when inside a module (instead of adding the namespace prefix to the ID).} } \description{ The \code{click()} function can be used to programatically simulate a click on a Shiny \code{actionButton()}. } \note{ \code{shinyjs} must be initialized with a call to \code{useShinyjs()} in the app's ui. } \examples{ if (interactive()) { library(shiny) shinyApp( ui = fluidPage( useShinyjs(), # Set up shinyjs "Count:", textOutput("number", inline = TRUE), br(), actionButton("btn", "Click me"), br(), "The button will be pressed automatically every 3 seconds" ), server = function(input, output) { output$number <- renderText({ input$btn }) observe({ click("btn") invalidateLater(3000) }) } ) } } \seealso{ \code{\link[shinyjs]{useShinyjs}}, \code{\link[shinyjs]{runExample}} } shinyjs/DESCRIPTION0000644000176200001440000000236613607010303013447 0ustar liggesusersPackage: shinyjs Title: Easily Improve the User Experience of Your Shiny Apps in Seconds Version: 1.1 Authors@R: person("Dean", "Attali", email = "daattali@gmail.com", role = c("aut", "cre")) Description: Perform common useful JavaScript operations in Shiny apps that will greatly improve your apps without having to know any JavaScript. Examples include: hiding an element, disabling an input, resetting an input back to its original value, delaying code execution by a few seconds, and many more useful functions for both the end user and the developer. 'shinyjs' can also be used to easily call your own custom JavaScript functions from R. URL: https://deanattali.com/shinyjs BugReports: https://github.com/daattali/shinyjs/issues Depends: R (>= 3.1.0) Imports: digest (>= 0.6.8), htmltools (>= 0.2.9), jsonlite, shiny (>= 1.0.0) Suggests: knitr (>= 1.7), rmarkdown, shinyAce, testthat (>= 0.9.1), V8 (>= 0.6) License: AGPL-3 SystemRequirements: pandoc with https support LazyData: true VignetteBuilder: knitr RoxygenNote: 6.1.1 NeedsCompilation: no Packaged: 2020-01-13 01:12:39 UTC; Oriane Author: Dean Attali [aut, cre] Maintainer: Dean Attali Repository: CRAN Date/Publication: 2020-01-13 06:40:03 UTC shinyjs/build/0000755000176200001440000000000013606742006013044 5ustar liggesusersshinyjs/build/vignette.rds0000644000176200001440000000054313606742006015405 0ustar liggesusersRN0 1ܘ&i5j5,M$ƃ#F9$8?;Cx]5}Fv7TLozF?Hr:_'!B_P֐C2MKP$Xlcm3x 3Bf d.MXj D`"%X?ErL@Ȣ** "dTjXs"U߶jT 4;UC\Xl|2F8`xpG"8yu љ u-cdfZ,qR47rӸxE.D%#.5(D;E.8 !Hz}n!shinyjs/tests/0000755000176200001440000000000013542227616013113 5ustar liggesusersshinyjs/tests/testthat/0000755000176200001440000000000013607010302014733 5ustar liggesusersshinyjs/tests/testthat/test-extendShinyjs.R0000644000176200001440000000375113542227616020720 0ustar liggesuserscontext("extendShinyjs") # some platforms don't have V8 library available, so extendShinyjs won't # work on them. If it's not available, don't run the tests if (!requireNamespace("V8", quietly = TRUE)) { return() } test_that("extendShinyjs throws error when given a non-existent JS file", { file <- file.path("..", "nofile.js") expect_error(extendShinyjs(file), "Could not find JavaScript file") }) test_that("extendShinyjs throws error when JS file doesn't have proper shinyjs functions", { file <- file.path("..", "test-nofunc.js") expect_error(extendShinyjs(file), "Could not find any shinyjs functions") }) test_that("extendShinyjs throws error when given a bad JavaScript file", { file <- file.path("..", "test-error.js") expect_error(extendShinyjs(file), "Error parsing") }) test_that("extendShinyjs finds the correct JS functions from script file", { file <- file.path("..", "test-success.js") extendShinyjs(file) expect_true(all(c("increment", "noop", "colour") %in% ls(js))) }) test_that("extendShinyjs throws error when inline code doesn't have proper shinyjs functions", { code <- "sayhello = function() { alert('Hello!'); }" expect_error(extendShinyjs(text = code), "Could not find any shinyjs functions") }) test_that("extendShinyjs throws error when given bad inline code", { code <- "sayhello = function() { alert('Hello!');" expect_error(extendShinyjs(text = code), "Error parsing") }) test_that("extendShinyjs finds the correct JS functions from inline code", { code <- "shinyjs.sayhello = function() { alert('Hello!'); }" extendShinyjs(text = code) expect_true(all(c("sayhello") %in% ls(js))) }) test_that("extendShinyjs finds the correct functions when both file and text are given", { file <- file.path("..", "test-empty.js") code <- "shinyjs.inline1 = function() {}; shinyjs.inline2 = function() {};" extendShinyjs(file, code) expect_true(all(c("test1", "test2", "inline1", "inline2") %in% ls(js))) }) shinyjs/tests/testthat/test-hidden.R0000644000176200001440000000331513542227616017310 0ustar liggesuserscontext("hidden") getClasses <- function(tag) { unlist(strsplit(htmltools::tagGetAttribute(tag, "class"), " ")) } clsName <- "shinyjs-hide" test_that("hidden fails on plain text", { expect_error(hidden("abc"), "Invalid shiny tag") }) test_that("hidden works on simple div", { tag <- hidden(shiny::div("abc")) expect_true(clsName %in% getClasses(tag)) }) test_that("hidden works on complex div", { tag <- hidden(shiny::div(shiny::span("abc"))) expect_true(clsName %in% getClasses(tag)) }) test_that("hidden works when div already contains a class", { tag <- hidden(shiny::div("abc", class = "test")) expect_true(clsName %in% getClasses(tag)) }) test_that("hidden errors when one of multiple tags is not a tag", { expect_error(hidden(shiny::p("abc"), "abc"), "Invalid shiny tag") expect_error(hidden(list(shiny::p("abc"), "abc")), "Invalid shiny tag") expect_error(hidden(shiny::tagList(shiny::p("abc"), "abc")), "Invalid shiny tag") }) test_that("hidden works when given multiple tags", { res <- hidden(shiny::p("abc"), shiny::span("abc")) expect_equal(length(res), 2) expect_true(clsName %in% getClasses(res[[1]])) expect_true(clsName %in% getClasses(res[[2]])) }) test_that("hidden works when given list", { res <- hidden(list(shiny::p("abc"), shiny::span("abc"))) expect_equal(length(res), 2) expect_true(clsName %in% getClasses(res[[1]])) expect_true(clsName %in% getClasses(res[[2]])) }) test_that("hidden works when given tagList", { res <- hidden(shiny::tagList(shiny::p("abc"), shiny::span("abc"))) expect_equal(length(res), 2) expect_true(clsName %in% getClasses(res[[1]])) expect_true(clsName %in% getClasses(res[[2]])) }) shinyjs/tests/test-error.js0000644000176200001440000000035213542227616015557 0ustar liggesusersshinyjs.increment = function(params) { var defaultParams = { id : null, num : 1 }; params = shinyjs.getParams(params, defaultParams); var el = $("#" + params.id); el.text(parseInt(el.text()) + params.num); shinyjs/tests/test-success.js0000644000176200001440000000076513542227616016106 0ustar liggesusersshinyjs.increment = function(params) { var defaultParams = { id : null, num : 1 }; params = shinyjs.getParams(params, defaultParams); var el = $("#" + params.id); el.text(parseInt(el.text()) + params.num); } shinyjs.noop = function(params) {} shinyjs.colour = function(params) { var defaultParams = { id : null, col : "red" }; params = shinyjs.getParams(params, defaultParams); var el = $("#" + params.id); el.css('color', params.col); } shinyjs/tests/test-nofunc.js0000644000176200001440000000034513542227616015720 0ustar liggesusersincrement = function(params) { var defaultParams = { id : null, num : 1 }; params = shinyjs.getParams(params, defaultParams); var el = $("#" + params.id); el.text(parseInt(el.text()) + params.num); } shinyjs/tests/testthat.R0000644000176200001440000000007613542227616015101 0ustar liggesuserslibrary(testthat) library(shinyjs) test_check("shinyjs") shinyjs/tests/test-empty.js0000644000176200001440000000007613542227616015567 0ustar liggesusersshinyjs.test1 = function() {} shinyjs.test2 = function() {} shinyjs/vignettes/0000755000176200001440000000000013606742006013755 5ustar liggesusersshinyjs/vignettes/shinyjs-extend.Rmd0000644000176200001440000001447213542227616017411 0ustar liggesusers--- title: "extendShinyjs: Calling your own JavaScript functions from R" author: "Dean Attali" date: "`r Sys.Date()`" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{extendShinyjs - Calling your own JavaScript functions from R} %\VignetteEngine{knitr::rmarkdown} %\usepackage[utf8]{inputenc} --- ```{r setup, echo = FALSE, message = FALSE} knitr::opts_chunk$set(tidy = FALSE, comment = "#>") ``` # extendShinyjs: Calling your own JavaScript functions from R

Simple example

Using `extendShinyjs` is very simple and makes defining and calling JavaScript functions painless. Here is a very basic example of using `extendShinyjs` to define a (fairly useless) function that changes the colour of the page. > Note: All the examples on this page assume that you have the `V8` package installed. If you cannot install `V8`, then you will need to use the `functions` argument of `extendShinyjs` (read more about this argument with `?shinyjs::extendShinyjs`). ``` library(shiny) library(shinyjs) jsCode <- "shinyjs.pageCol = function(params){$('body').css('background', params);}" shinyApp( ui = fluidPage( useShinyjs(), extendShinyjs(text = jsCode), selectInput("col", "Colour:", c("white", "yellow", "red", "blue", "purple")) ), server = function(input, output) { observeEvent(input$col, { js$pageCol(input$col) }) } ) ``` Running the code above produces this shiny app: ![Extendshinyjs demo](../inst/img/extendshinyjs-demo.gif) See how easy that was? All I had to do was make the JavaScript function `shinyjs.pageCol`, pass the JavaScript code as an argument to `extendShinyjs`, and then I can call `js$pageCol()`. That's the basic idea: any JavaScript function named `shinyjs.foo` will be available to call as `js$foo()`. You can either pass the JS code as a string to the `text` argument, or place the JS code in a separate JavaScript file and use the `script` argument to specify where the code can be found. Using a separate file is generally prefered over writing the code inline, but in these examples I will always use the `text` argument to keep it simple.

Running JavaScript code on page load

If there is any JavaScript code that you want to run immediately when the page loads rather than having to call it from the server, you can place it inside a `shinyjs.init` function. The function `shinyjs.init` will automatically be called when the Shiny app's HTML is initialized. A common use for this is when registering event handlers or initializing JavaScript objects, as these usually just need to run once when the page loads. For example, the following example uses `shinyjs.init` to register an event handler so that every keypress will print its corresponding key code: ``` jscode <- " shinyjs.init = function() { $(document).keypress(function(e) { alert('Key pressed: ' + e.which); }); }" shinyApp( ui = fluidPage( useShinyjs(), extendShinyjs(text = jscode), "Press any key" ), server = function(input, output) {} ) ```

Passing arguments from R to JavaScript

Any `shinyjs` function that is called will pass a single array-like parameter to its corresponding JavaScript function. If the function in R was called with unnamed arguments, then it will pass an Array of the arguments; if the R arguments are named then it will pass an Object with key-value pairs. For example, calling `js$foo("bar", 5)` in R will call `shinyjs.foo(["bar", 5])` in JS, while calling `js$foo(num = 5, id = "bar")` in R will call `shinyjs.foo({num : 5, id : "bar"})` in JS. This means that the `shinyjs.foo` function needs to be able to deal with both types of parameters. To assist in normalizing the parameters, `shinyjs` provides a `shinyjs.getParams()` function which serves two purposes. First of all, it ensures that all arguments are named (even if the R function was called without names). Secondly, it allows you to define default values for arguments. Here is an example of a JS function that changes the background colour of an element and uses `shinyjs.getParams()`. ``` shinyjs.backgroundCol = function(params) { var defaultParams = { id : null, col : "red" }; params = shinyjs.getParams(params, defaultParams); var el = $("#" + params.id); el.css("background-color", params.col); } ``` Note the `defaultParams` that we defined and the call to `shinyjs.getParams`. It ensures that calling `js$backgroundCol("test", "blue")` and `js$backgroundCol(id = "test", col = "blue")` and `js$backgroundCol(col = "blue", id = "test")` are all equivalent, and that if the colour parameter is not provided then "red" will be the default. All the functions provided in `shinyjs` make use of `shinyjs.getParams`, and it is highly recommended to always use it in your functions as well. Notice that the order of the arguments in `defaultParams` in the JavaScript function matches the order of the arguments when calling the function in R with unnamed arguments. For completeness, here is the code for a shiny app that uses the above function (it's not a very practical example, but it's great for showing how to use `extendShinyjs` with parameters): ``` library(shiny) library(shinyjs) jsCode <- ' shinyjs.backgroundCol = function(params) { var defaultParams = { id : null, col : "red" }; params = shinyjs.getParams(params, defaultParams); var el = $("#" + params.id); el.css("background-color", params.col); }' shinyApp( ui = fluidPage( useShinyjs(), extendShinyjs(text = jsCode), p(id = "name", "My name is Dean"), p(id = "sport", "I like soccer"), selectInput("col", "Colour:", c("white", "yellow", "red", "blue", "purple")), textInput("selector", "Element", ""), actionButton("btn", "Go") ), server = function(input, output) { observeEvent(input$btn, { js$backgroundCol(input$selector, input$col) }) } ) ``` And the resulting app: ![Extendshinyjs params demo](../inst/img/extendshinyjs-params.gif) Note that I chose to define the JS code as a string for illustration purposes, but in reality I would prefer to place the code in a separate file and use the `script` argument instead of `text`. shinyjs/vignettes/shinyjs-example.Rmd0000644000176200001440000001571113542227616017552 0ustar liggesusers--- title: "shinyjs example app walk-through" author: "Dean Attali" date: "`r Sys.Date()`" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{shinyjs example app walk-through} %\VignetteEngine{knitr::rmarkdown} %\usepackage[utf8]{inputenc} --- ```{r setup, echo = FALSE, message = FALSE} knitr::opts_chunk$set(tidy = FALSE, comment = "#>") ``` # shinyjs example app walk-through This document provides a step-by-step guide on how to add a variety of shinyjs features to a simple app in order to make it more user friendly. *You can view the final Shiny app developed in this simple example [here](http://daattali.com/shiny/shinyjs-basic/).* Suppose we want to have a simple Shiny app that collects a user's basic information (name, age, company) and submits it, along with the time of submission. Here is a very simple implementation of such an app (nothing actually happens when the user "submits"). ``` library(shiny) shinyApp( ui = fluidPage( div(id = "myapp", h2("shinyjs demo"), textInput("name", "Name", ""), numericInput("age", "Age", 30), textInput("company", "Company", ""), p("Timestamp: ", span(date())), actionButton("submit", "Submit") ) ), server = function(input, output) { } ) ``` *Note that I generally don't like running Shiny apps like this and prefer to declare the UI and server separately, but this style is used here for brevity.* Here is what that app would look like ![Demo app](../inst/img/demo-basic-v1.png) ### Add shinyjs features Now suppose we want to add a few features to the app to make it a bit more user-friendly. First we need to set up the app to use `shinyjs` by making a call to `useShinyjs()` in the Shiny app's UI. Here are 7 features we'll add to the app, each followed with the code to implement it using `shinyjs`: **1. The "Name" field is mandatory and thus the "Submit" button should not be enabled if there is no name** In the server portion, add the following code ``` observe({ if (is.null(input$name) || input$name == "") { shinyjs::disable("submit") } else { shinyjs::enable("submit") } }) ``` Or instead you can use the `toggleState` function and pass it a `condition`: ``` observe({ shinyjs::toggleState("submit", !is.null(input$name) && input$name != "") }) ``` You can use the optional `condition` in some other functions as well, which can be very useful to make your code shorter and more understandable. **2. The "Age" and "Company" fields are optional and we want to have the ability to hide that section of the form** First, we need to section off the "Age" and "Company" elements into their own section, so we surround them with a `div` ``` div(id = "advanced", numericInput("age", "Age", 30), textInput("company", "Company", "") ) ``` We also need to add a link in the UI that will be used to hide/show the section ``` a(id = "toggleAdvanced", "Show/hide advanced info") ``` Lastly, we need to tell Shiny to show/hide the section when the link is clicked by adding this code to the server ``` shinyjs::onclick("toggleAdvanced", shinyjs::toggle(id = "advanced", anim = TRUE)) ``` **3. Similarly, since we don't really care about "Age" and "Company" too much, we want to hide them initially when the form loads** Simply surround the section we want to hide initially with `shinyjs::hidden` ``` shinyjs::hidden( div(id = "advanced", ... )) ``` **4. The user should be able to update the "Timestamp" in case he spends way too long filling out the form (not very realistic here, and the timestamp should ideally be determined when the button is clicked, but it's good enough for illustration purposes)** First, we need to add an "Update" link to click on, and we need to give the element showing the time an `id` so that we can refer to it later when we want to change its contents. To do that, replace `p("Timestamp: ", span(date()))` with ``` p("Timestamp: ", span(id = "time", date()), a(id = "update", "Update")) ``` Now we need to tell Shiny what to do when "Update" is clicked by adding this to the server ``` shinyjs::onclick("update", shinyjs::html("time", date())) ``` **5. Some users may find it hard to read the small text in the app, so there should be an option to increase the font size** First, we need to add checkbox to the UI ``` checkboxInput("big", "Bigger text", FALSE) ``` In order to make the text bigger, we will use CSS. So let's add an appropriate CSS rule by adding this code to the UI ``` shinyjs::inlineCSS(list(.big = "font-size: 2em")) ``` Lastly, we want the text to be big or small depending on whether the checkbox is checked by adding this code to the server ``` observe({ if (input$big) { shinyjs::addClass("myapp", "big") } else { shinyjs::removeClass("myapp", "big") } }) ``` Or, again, we can use the `toggleClass` function with the `condition` argument: ``` observe({ shinyjs::toggleClass("myapp", "big", input$big) }) ``` **6. Give the user a "Thank you" message upon submission** Simply add the following to the server ``` observeEvent(input$submit, { shinyjs::alert("Thank you!") }) ``` **7. Allow the user to reset the form** First let's add a button to the UI ``` actionButton("reset", "Reset form") ``` And when the button is clicked, reset the form ``` observeEvent(input$reset, { shinyjs::reset("myapp") }) ``` ### Final code The final code looks like this ``` library(shiny) shinyApp( ui = fluidPage( shinyjs::useShinyjs(), shinyjs::inlineCSS(list(.big = "font-size: 2em")), div(id = "myapp", h2("shinyjs demo"), checkboxInput("big", "Bigger text", FALSE), textInput("name", "Name", ""), a(id = "toggleAdvanced", "Show/hide advanced info", href = "#"), shinyjs::hidden( div(id = "advanced", numericInput("age", "Age", 30), textInput("company", "Company", "") ) ), p("Timestamp: ", span(id = "time", date()), a(id = "update", "Update", href = "#") ), actionButton("submit", "Submit"), actionButton("reset", "Reset form") ) ), server = function(input, output) { observe({ shinyjs::toggleState("submit", !is.null(input$name) && input$name != "") }) shinyjs::onclick("toggleAdvanced", shinyjs::toggle(id = "advanced", anim = TRUE)) shinyjs::onclick("update", shinyjs::html("time", date())) observe({ shinyjs::toggleClass("myapp", "big", input$big) }) observeEvent(input$submit, { shinyjs::alert("Thank you!") }) observeEvent(input$reset, { shinyjs::reset("myapp") }) } ) ``` You can view the final app [here](http://daattali.com/shiny/shinyjs-basic/). shinyjs/vignettes/shinyjs.Rmd0000644000176200001440000002537013542227616016123 0ustar liggesusers--- title: "Package shinyjs" author: "Dean Attali" date: "`r Sys.Date()`" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Package shinyjs} %\VignetteEngine{knitr::rmarkdown} %\usepackage[utf8]{inputenc} --- ```{r setup, echo = FALSE, message = FALSE} knitr::opts_chunk$set(tidy = FALSE, comment = "#>") ```

shinyjs

shinyjs

Easily improve the user experience of your Shiny apps in seconds

Official website · Copyright 2016 Dean Attali

Donate Build Status CRAN version

--- `shinyjs` lets you perform common useful JavaScript operations in Shiny apps that will greatly improve your apps without having to know any JavaScript. Examples include: hiding an element, disabling an input, resetting an input back to its original value, delaying code execution by a few seconds, and many more useful functions for both the end user and the developer. `shinyjs` can also be used to easily call your own custom JavaScript functions from R. **shinyjs is under the AGPL-3 license. For a commercial license, please [contact me](https://deanattali.com/contact). If you find shinyjs useful, please consider supporting its development!**

# Table of contents - [Demos and tutorials](#demos) - [Overview of main functions](#overview-main) - [Installation](#install) - [How to use](#usage) - [Basic use case - complete working example](#usecase) - [Calling your own JavaScript functions from R](#extendshinyjs) - [FAQ and extra tricks](#faq-tricks) - [More resources](#more-resources)

Demos and tutorials

- [Demo Shiny app](https://deanattali.com/shinyjs/demo) that lets you play around with some of the functionality in `shinyjs`. - [Video of my shinyjs talk](https://deanattali.com/shinyjs-shinydevcon-2016/) (30 min) and the corresponding [presentation slides](https://bit.ly/shinyjs-slides) from the 2016 Shiny Developer Conference. - [Video of my shinyjs talk](https://deanattali.com/shinyjs-user-2016/) (5 min) and the corresponding [presentation slides](https://bit.ly/shinyjs-slides-useR2016) from the 2016 useR Conference.

Overview of main functions

**Note: In order to use any `shinyjs` function in a Shiny app, you must first call `useShinyjs()` anywhere in the app's UI.** | Function | Description | |---------------------|----------------------------------------------------| | `show`/`hide`/`toggle` | Display or hide an element (optionally with an animation). | | `hidden` | Initialize a Shiny tag as invisible (can be shown later with a call to `show`). | | `enable`/`disable`/`toggleState` | Enable or disable an input element, such as a button or a text input. | | `disabled` | Initialize a Shiny input as disabled. | | `reset` | Reset a Shiny input widget back to its original value. | | `delay` | Execute R code (including any `shinyjs` functions) after a specified amount of time. | | `alert` | Show a message to the user. | | `click` | Simulate a click on a button. | | `html` | Change the text/HTML of an element. | | `onclick` | Run R code when a specific element is clicked. Was originally developed with the sole purpose of running a `shinyjs` function when an element is clicked, though any R code can be used. | | `onevent` | Similar to `onclick`, but can be used with many other events instead of click (for example, listen for a key press, mouse hover, etc). | | `addClass`/`removeClass`/`toggleClass` | add or remove a CSS class from an element. | | `runjs` | Run arbitrary JavaScript code. | | `extendShinyjs` | Allows you to write your own JavaScript functions and use `shinyjs` to call them as if they were regular R code. More information is available in the section "Calling your own JavaScript functions from R" below. | ### Functions that help you during Shiny app development | Function | Description | |---------------------|----------------------------------------------------| | `runcodeUI`+`runcodeServer` | Adds a text input to your app that lets you run arbitrary R code live. | | `showLog` | Print any JavaScript `console.log()` messages in the R console, to make it easier and quicker to debug apps without having to open the JS console. | | `logjs` | Print a message to the JavaScript console (mainly used for debugging purposes). | | `inlineCSS` | Easily add inline CSS to a Shiny app. | [Check out the shinyjs demo app](https://deanattali.com/shinyjs/demo) to see some of these in action, or install `shinyjs` and run `shinyjs::runExample()` to see more demos.

Installation

To install the stable CRAN version: ``` install.packages("shinyjs") ``` To install the latest development version from GitHub: ``` install.packages("devtools") devtools::install_github("daattali/shinyjs") ```

How to use

A typical Shiny app has a UI portion and a server portion. Before using most shinyjs functions, you need to call `useShinyjs()` in the app's UI. It's best to include it near the top as a convention. Here is a minimal Shiny app that uses `shinyjs`: ``` library(shiny) library(shinyjs) ui <- fluidPage( useShinyjs(), # Include shinyjs actionButton("button", "Click me"), textInput("text", "Text") ) server <- function(input, output) { observeEvent(input$button, { toggle("text") # toggle is a shinyjs function }) } shinyApp(ui, server) ``` This is how most Shiny apps should initialize `shinyjs` - by calling `useShinyjs()` near the top of the UI. However, if you use shinyjs in any of the following cases: - In Shiny dashboards (built using the `shinydashboard` package) - In Shiny apps that use a `navbarPage` layout - In Rmd documents - In Shiny apps that manually build the user interface with an HTML file or template (instead of using Shiny's UI functions) Then you should see the [*Including shinyjs in different types of apps*](https://deanattali.com/shinyjs/advanced) document. If your Shiny app doesn't fall into any of these categories, then the above code sample should be enough to get your started with including shinyjs in your app.

Basic use case - complete working example

See the [*shinyjs example app walk-through*](https://deanattali.com/shinyjs/example) document for a step-by-step guide on how to add a variety of shinyjs features to a simple app in order to make it more user friendly.

Calling your own JavaScript functions from R

You can also use `shinyjs` to add your own JavaScript functions that can be called from R as if they were regular R functions using `extendShinyjs`. This is only suitable for advanced users who are familiar with JavaScript and wish to facilitate the communication between R and JavaScript. To learn about this feature and see how useful it can be, see the [*extendShinyjs: Calling your own JavaScript functions from R*](https://deanattali.com/shinyjs/extend) document.

FAQ and extra tricks

There are several questions that pop up very frequently in my email or on StackOverflow about "How do I use shinyjs to do \_\_\_?" Here is a list of a few of these common questions with links to a solution that could be useful. Note that all of these require using `extendShinyjs()`. - [How do I show/hide the `shinydashboard` sidebar programmatically?](https://stackoverflow.com/a/31306707/3943160) - [How do I hide/disable a tab?](https://stackoverflow.com/a/31719425/3943160) - [How do I refresh the page?](https://stackoverflow.com/a/34758024/3943160) - [How do I call a JavaScript function from a different JavaScript library?](https://github.com/timelyportfolio/sweetalertR/issues/1#issuecomment-151685005) - [How do I change the values of a `sliderInput`?](https://stackoverflow.com/a/31066997/3943160) - [How do I call JavaScript code and use the return value?](https://stackoverflow.com/a/34728125/3943160) I also keep a long [list of various Shiny tips & tricks](https://deanattali.com/blog/advanced-shiny-tips/) for solving common Shiny problems, many of which make use of shinyjs.

More resources

This document is meant to serve as a high overview of shinyjs. There are three more documents provided in shinyjs to teach you various aspects of the package: - [Including shinyjs in different types of apps](https://deanattali.com/shinyjs/advanced) - [shinyjs example app walk-through](https://deanattali.com/shinyjs/example) - [extendShinyjs: Calling your own JavaScript functions from R](https://deanattali.com/shinyjs/extend) If you need help with shinyjs, a good place to start is to try to get help from the community. I suggest browsing the [shinyjs tag](https://stackoverflow.com/tags/shinyjs) on StackOverflow or asking your own question there. You can also try getting help on the [RStudio Community forums](https://community.rstudio.com/c/shiny). If you still can't get an answer to your question, you can [contact me](https://deanattali.com/contact). However, because of the high volume of support emails I receive daily, I can only provide support for a fee (as part of my [Shiny consulting](http://attalitech.com/)). ## Motivation & alternatives using native Shiny The initial release of this package was announced [on my blog](https://deanattali.com/2015/04/23/shinyjs-r-package/) and discusses these topics. ## Contributions If you have any suggestions or feedback, I would love to hear about it. You can either [message me directly](https://deanattali.com/contact), [open an issue](https://github.com/daattali/shinyjs/issues) if you want to request a feature/report a bug, or make a pull request if you can contribute. I'd like to give special thanks to the Shiny developers, especially [Joe Cheng](http://www.joecheng.com/) for always answering all my Shiny questions. Lastly, if you find shinyjs useful, please consider [supporting me](https://www.paypal.me/daattali/20) for the countless hours I've spent building, documenting, and supporting this package :) shinyjs/vignettes/shinyjs-usage.Rmd0000644000176200001440000001627213606741152017223 0ustar liggesusers--- title: "Including shinyjs in different types of apps" author: "Dean Attali" date: "`r Sys.Date()`" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Including shinyjs in different types of apps} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r setup, echo = FALSE, message = FALSE} knitr::opts_chunk$set(tidy = FALSE, comment = "#>") ``` # Including shinyjs in different types of apps ## Table of contents - [Basic use of shinyjs](#usage-basic) - [Using shinyjs in Shiny Dashboards](#usage-dashboard) - [Using shinyjs with navbarPage layout](#usage-navbarpage) - [Using shinyjs in R Markdown documents](#usage-rmd) - [Rmd documents with Tabbed Sections](#usage-tabbed) - [Rmd documents using `shiny_prerendered` engine](#usage-prerendered) - [Using shinyjs when the user interface is built using an HTML file](#usage-html)

Basic use of shinyjs

A typical Shiny app has a UI portion and a server portion. Before using most shinyjs functions, you need to call `useShinyjs()` in the app's UI. It's best to include it near the top as a convention. Here is a minimal Shiny app that uses `shinyjs`: ``` library(shiny) library(shinyjs) ui <- fluidPage( useShinyjs(), # Include shinyjs actionButton("button", "Click me"), textInput("text", "Text") ) server <- function(input, output) { observeEvent(input$button, { toggle("text") # toggle is a shinyjs function }) } shinyApp(ui, server) ``` This is how most Shiny apps should initialize `shinyjs` - by calling `useShinyjs()` near the top of the UI. However, if you use shinyjs in any of the following cases: - In Shiny dashboards (built using the `shinydashboard` package) - In Shiny apps that use a `navbarPage` layout - In Rmd documents - In Shiny apps that manually build the user interface with an HTML file or template (instead of using Shiny's UI functions) Then the following sections will show you how you to include shinyjs.

Using shinyjs in Shiny Dashboards

`shinydashboard` is an R package that lets you create nice dashboards with Shiny. Since it has a different structure than typical Shiny apps, it can be unclear where to include the call to `useShinyjs()` in these apps. It is recommended to place the call to `useShinyjs()` in the beginning of `dashboardBody()`. For example, here is a minimal Shiny dashboard that uses `shinyjs`: ``` library(shiny) library(shinydashboard) library(shinyjs) ui <- dashboardPage( dashboardHeader(), dashboardSidebar(), dashboardBody( useShinyjs(), actionButton("button", "Click me"), div(id = "hello", "Hello!") ) ) server <- function(input, output) { observeEvent(input$button, { toggle("hello") }) } shinyApp(ui, server) ```

Using shinyjs with navbarPage layout

When creating a Shiny app that uses a `navbarPage` layout, the call to `useShinyjs()` can be placed inside any of the tabs (since the only real requirement is that it will be present *somewhere* in the UI). While having `useShinyjs()` inside the contents of any tab will work, there is another method that is preferred. You can wrap the `navbarPage` in a `tagList`, and call `useShinyjs()` within the `tagList`. This way, `shinyjs` gets set up in a way that is independent of each of the tabs. For example, here is a minimal Shiny app that uses `shinyjs` inside a `navbarPage` layout: ``` library(shiny) library(shinyjs) ui <- tagList( useShinyjs(), navbarPage( "shinyjs with navbarPage", tabPanel("tab1", actionButton("button", "Click me"), div(id = "hello", "Hello!")), tabPanel("tab2") ) ) server <- function(input, output, session) { observeEvent(input$button, { toggle("hello") }) } shinyApp(ui, server) ```

Using shinyjs in R Markdown documents

It is possible to embed Shiny components in an R Markdown document, resulting in interactive R Markdown documents. More information on how to use these documents is available [on the R Markdown website](https://bookdown.org/yihui/rmarkdown/shiny-documents.html). Even though interactive documents don't explicitly specify a UI and a server, using `shinyjs` is still easy: simply call `useShinyjs(rmd = TRUE)` (note the `rmd = TRUE` argument). For example, the following code can be used inside an R Markdown code chunk (assuming the Rmd document is set up with `runtime: shiny` as the link above describes): ``` library(shinyjs) useShinyjs(rmd = TRUE) actionButton("button", "Click me") div(id = "hello", "Hello!") observeEvent(input$button, { toggle("hello") }) ```

Rmd documents with Tabbed Sections

If the Rmd file makes use of [Tabbed Sections](http://rmarkdown.rstudio.com/html_document_format.html#tabbed_sections) (using `{.tabset}`), then you should include the call to `useShinyjs(rmd = TRUE)` before the tabset definition, near the beginning of the file.

Rmd documents using `shiny_prerendered` engine

If you're using the [`shiny_prerendered` Rmd format](https://bookdown.org/yihui/rmarkdown/shiny-documents.html), you need to include the following code in the beginning of your Rmd file, just after the YAML header (you need to remove the spaces between the backticks to make this code work): ```` ` ` `{r, echo=FALSE} shiny::addResourcePath("shinyjs", system.file("srcjs", package = "shinyjs")) ` ` ` ` ` `{r, context="server"} shinyjs::useShinyjs(html = TRUE) ` ` ` ````

Using shinyjs when the user interface is built using an HTML file/template

While most Shiny apps use Shiny's functions to build a user interface to the app, it is possible to build the UI with an HTML template, [as RStudio shows in this article](http://shiny.rstudio.com/articles/templates.html). In this case, you simply need to add `{{ useShinyjs() }}` somewhere in the template, preferably inside the `...` tags. A similar way to create your app's UI with HTML is to write it entirely in HTML (without templates), [as RStudio shows in this article](http://shiny.rstudio.com/articles/html-ui.html). Building Shiny apps like this is much more complicated and should only be used if you're very comfortable with HTML. Using `shinyjs` in these apps is possible but it works a little differently since there is no `ui.R` to call `useShinyjs()` from. There are three simple steps to take in order to use `shinyjs` in these apps: - Create a `global.R` file in the same directory as your `server.R`, and add the following line to the file: shiny::addResourcePath("shinyjs", system.file("srcjs", package = "shinyjs")) - In the `index.html` file you need to load a special JavaScript file named `shinyjs/inject.js`. You do this by adding the following line to the HTML's `` tag: `` - In your server function (the `shinyServer` function) you need to call `useShinyjs(html = TRUE)` After adding these three lines to your code, you can use all `shinyjs` functions as usual. shinyjs/R/0000755000176200001440000000000013542227616012152 5ustar liggesusersshinyjs/R/jsFunc-stateFuncs.R0000644000176200001440000000743213542227616015650 0ustar liggesusers#' Enable/disable an input element #' #' Enable or disable an input element. A disabled element is not usable and #' not clickable, while an enabled element (default) can receive user input. #' Any shiny input tag can be used with these functions.\cr\cr #' \strong{\code{enable}} enables an input, \strong{\code{disable}} disabled #' an input,\strong{\code{toggleState}} enables an input if it is disabled #' and disables an input if it is already enabled.\cr\cr #' If \code{condition} is given to \code{toggleState}, that condition will be used #' to determine if to enable or disable the input. The element will be enabled if #' the condition evaluates to \code{TRUE} and disabled otherwise. If you find #' yourself writing code such as \code{if (test()) enable(id) else disable(id)} #' then you can use \code{toggleState} instead: \code{toggleState(id, test())}. #' #' @param id The id of the input element/Shiny tag #' @param condition An optional argument to \code{toggleState}. The element will #' be enabled when the \code{condition} is \code{TRUE}, and disabled otherwise. #' @param selector Query selector of the elements to target. Ignored if the \code{id} #' argument is given. For example, to disable all text inputs, use #' \code{selector = "input[type='text']"} #' @param asis If \code{TRUE}, use the ID as-is even when inside a module #' (instead of adding the namespace prefix to the ID). #' @seealso \code{\link[shinyjs]{useShinyjs}}, #' \code{\link[shinyjs]{runExample}} #' \code{\link[shinyjs]{disabled}} #' @note \code{shinyjs} must be initialized with a call to \code{useShinyjs()} #' in the app's ui. #' @examples #' if (interactive()) { #' library(shiny) #' #' shinyApp( #' ui = fluidPage( #' useShinyjs(), # Set up shinyjs #' actionButton("btn", "Click me"), #' textInput("element", "Watch what happens to me") #' ), #' server = function(input, output) { #' observeEvent(input$btn, { #' # Change the following line for more examples #' toggleState("element") #' }) #' } #' ) #' } #' \dontrun{ #' # The shinyjs function call in the above app can be replaced by #' # any of the following examples to produce similar Shiny apps #' toggleState(id = "element") #' enable("element") #' disable("element") #' #' # Similarly, the "element" text input can be changed to many other #' # input tags, such as the following examples #' actionButton("element", "I'm a button") #' fileInput("element", "Choose a file") #' selectInput("element", "I'm a select box", 1:10) #' } #' #' ## toggleState can be given an optional `condition` argument, which #' ## determines if to enable or disable the input #' if (interactive()) { #' shinyApp( #' ui = fluidPage( #' useShinyjs(), #' textInput("text", "Please type at least 3 characters"), #' actionButton("element", "Submit") #' ), #' server = function(input, output) { #' observe({ #' toggleState(id = "element", condition = nchar(input$text) >= 3) #' }) #' } #' ) #' } #' @name stateFuncs NULL #' @export #' @rdname stateFuncs enable <- function(id = NULL, selector = NULL, asis = FALSE) { fxn <- "enable" params <- list(id = id, selector = selector, asis = asis) jsFuncHelper(fxn, params) } #' @export #' @rdname stateFuncs disable <- function(id = NULL, selector = NULL, asis = FALSE) { fxn <- "disable" params <- list(id = id, selector = selector, asis = asis) jsFuncHelper(fxn, params) } #' @export #' @rdname stateFuncs toggleState <- function(id = NULL, condition = NULL, selector = NULL, asis = FALSE) { fxn <- "toggleState" params <- list(id = id, condition = condition, selector = selector, asis = asis) jsFuncHelper(fxn, params) } shinyjs/R/jsFunc-aaa.R0000644000176200001440000000277413542227616014257 0ustar liggesusers# main powerhorse that takes an R command and translates it to shinyjs JS function jsFunc <- function(...) { params <- eval(substitute(alist(...))) if (!is.null(names(params)) && any(vapply(names(params), nzchar, 1L) == 0)) { errMsg(paste0("you cannot mix named and unnamed arguments in the same function call", " (function: ", as.character(match.call()[1]), ")")) } # evaluate the parameters in the appropriate environment parentFrame <- parent.frame(1) params <- lapply(params, function(x){ eval(x, envir = parentFrame) }) # figure out what JS function to call, make sure to work with namespacing as well pkgName <- "shinyjs" extensionName <- "js" regex <- sprintf("^(%s:{2,3})?(%s\\$)?((\\w)+)$", pkgName, extensionName) fxn <- as.character(as.list(match.call()[1])) fxn <- sub(regex, "\\3", fxn) jsFuncHelper(fxn, params) } # similar to jsFunc, but here we already know the function name and parameters jsFuncHelper <- function(fxn, params) { # get the Shiny session session <- getSession() fxn <- paste0("shinyjs-", fxn) # respect Shiny modules/namespaces if (inherits(session , "session_proxy")) { if ("id" %in% names(params) && !is.null(params[['id']])) { if (!"asis" %in% names(params) || !params[['asis']]) { params[['id']] <- session$ns(params[['id']]) } } } # call the javascript function session$sendCustomMessage( type = fxn, message = params) invisible(NULL) } shinyjs/R/jsFunc-html.R0000644000176200001440000000405513542227616014473 0ustar liggesusers#' Change the HTML (or text) inside an element #' #' Change the text or HTML inside an element. The given HTML can be any #' R expression, and it can either be appended to the currentcontents of the element #' or overwrite it (default). #' #' @param id The id of the element/Shiny tag #' @param html The HTML/text to place inside the element. Can be either simple #' plain text or valid HTML code. #' @param add If \code{TRUE}, then append \code{html} to the contents of the element; #' otherwise overwrite it. #' @param selector JQuery selector of the elements to target. Ignored if the \code{id} #' argument is given. #' @param asis If \code{TRUE}, use the ID as-is even when inside a module #' (instead of adding the namespace prefix to the ID). #' @seealso \code{\link[shinyjs]{useShinyjs}}, #' \code{\link[shinyjs]{runExample}} #' @note \code{shinyjs} must be initialized with a call to \code{useShinyjs()} #' in the app's ui. #' @examples #' if (interactive()) { #' library(shiny) #' #' shinyApp( #' ui = fluidPage( #' useShinyjs(), # Set up shinyjs #' actionButton("btn", "Click me"), #' p(id = "element", "Watch what happens to me") #' ), #' server = function(input, output) { #' observeEvent(input$btn, { #' # Change the following line for more examples #' html("element", paste0("The date is ", date())) #' }) #' } #' ) #' } #' \dontrun{ #' # The shinyjs function call in the above app can be replaced by #' # any of the following examples to produce similar Shiny apps #' html("element", "Hello!") #' html("element", " Hello!", TRUE) #' html("element", "bold that was achieved with HTML") #' local({val <- "some text"; html("element", val)}) #' html(id = "element", add = TRUE, html = input$btn) #' } #' @export html <- function(id = NULL, html = NULL, add = FALSE, selector = NULL, asis = FALSE) { fxn <- "html" params <- list(id = id, html = html, add = add, selector = selector, asis = asis) jsFuncHelper(fxn, params) } shinyjs/R/jsFunc-runjs.R0000644000176200001440000000143713542227616014671 0ustar liggesusers#' Run JavaScript code #' #' Run arbitrary JavaScript code. #' #' @param code JavaScript code to run. #' @seealso \code{\link[shinyjs]{useShinyjs}} #' @note \code{shinyjs} must be initialized with a call to \code{useShinyjs()} #' in the app's ui. #' @examples #' if (interactive()) { #' library(shiny) #' shinyApp( #' ui = fluidPage( #' useShinyjs(), # Set up shinyjs #' actionButton("btn", "Click me") #' ), #' server = function(input, output) { #' observeEvent(input$btn, { #' # Run JS code that simply shows a message #' runjs("var today = new Date(); alert(today);") #' }) #' } #' ) #' } #' @export runjs <- function(code) { fxn <- "runjs" params <- list(code = code) jsFuncHelper(fxn, params) } shinyjs/R/utils.R0000644000176200001440000000467713542227616013453 0ustar liggesusers# common way to print error messages errMsg <- function(x) { stop(sprintf("shinyjs: %s", x), call. = FALSE) } # get the shiny session object getSession <- function() { session <- shiny::getDefaultReactiveDomain() if (is.null(session)) { errMsg(paste( "could not find the Shiny session object. This usually happens when a", "shinyjs function is called from a context that wasn't set up by a Shiny session." )) } session } # set up some javascript functions to work with shinyjs and any other resources setupJS <- function(jsFuncs, script, text, ...) { # add a shiny message handler binding for each supported method tpl <- paste0( "Shiny.addCustomMessageHandler('shinyjs-%s', function(params) {", " shinyjs.debugMessage('shinyjs: calling function \"%s\" with parameters:');", " shinyjs.debugMessage(params);", " shinyjs.%s(params);", "});") controllers <- lapply(jsFuncs, function(x) { sprintf(tpl, x, x, x)}) controllers <- paste(controllers, collapse = "\n") # ensure the same scripts don't get added to the HTML twice shinyjsContent <- shiny::singleton( insertHead( # add the message handlers shiny::tags$script(shiny::HTML(controllers)), # add the actual javascript code shinyjsInlcudeScript(script), shinyjsInlineScript(text), # add any extra tags ... ) ) # inject the content via JavaScript if necessary if (!is.null(.globals$inject) && .globals$inject) { shinyjsContent <- as.character(shinyjsContent) session <- getSession() session$sendCustomMessage('shinyjs-inject', shinyjsContent) } else { shinyjsContent } } # insert content into the tag of the document if this is a proper HTML # Shiny app, but if it's inside an interactive Rmarkdown document then don't # use as it won't work insertHead <- function(...) { if (is.null(.globals$astext) || .globals$astext) { shiny::tagList(...) } else { shiny::tags$head(...) } } # include a JavaScript script shinyjsInlcudeScript <- function(script) { if (missing(script) || is.null(script)) { return(NULL) } else { shiny::tags$script(src = script) } } # include a JavaScript string shinyjsInlineScript <- function(text) { if (missing(text) || is.null(text)) { return(NULL) } else { shiny::tags$script(shiny::HTML(text)) } } shinyjs/R/zzz.R0000644000176200001440000000263513542227616013140 0ustar liggesusers# Show a random startup tip # Copied from ggplot2 .onAttach <- function(...) { if (!interactive()) return() tips <- c( "Need shinyjs help? You can ask any Shiny-related question in the RStudio Community forums:\n\thttps://community.rstudio.com/c/shiny", "Don't forget that shinyjs can also be used in Rmd documents!", "Watch shinyjs tutorial videos and read the full documentation:\n\thttps://deanattali.com/shinyjs", "Find out what's new in shinyjs:\n\thttps://github.com/daattali/shinyjs/releases", "Answers to common shinyjs questions can be found in the FAQ:\n\thttps://deanattali.com/shinyjs/help", "Need Shiny help? I'm available for consulting:\n\thttp://attalitech.com", "Use suppressPackageStartupMessages() to eliminate package startup messages.", "Stackoverflow is a great place to get help:\n\thttps://stackoverflow.com/tags/shinyjs", "Find out advanced usage of shinyjs:\n\thttps://deanattali.com/shinyjs/advanced", "Love shinyjs? Consider donating:\n\thttps://www.paypal.me/daattali/50", "See a demo of shinyjs and learn more:\n\thttps://deanattali.com/shinyjs/demo", "You can use shinyjs to call your own JavaScript functions:\n\thttps://deanattali.com/shinyjs/extend", "Learn different usages for shinyjs and other Shiny tricks:\n\thttps://deanattali.com/blog/advanced-shiny-tips" ) tip <- sample(tips, 1) packageStartupMessage(tip) }shinyjs/R/onevent.R0000644000176200001440000001454413542227616013763 0ustar liggesusers#' Run R code when an event is triggered on an element #' #' \code{onclick} runs an R expression (either a \code{shinyjs} function or any other code) #' when an element is clicked.\cr\cr #' \code{onevent} is similar, but can be used when any event is triggered on the element, #' not only a mouse click. See below for a list of possible event types. Using "click" #' results in the same behaviour as calling \code{onclick}. #' #' @param event The event that needs to be triggered to run the code. See below #' for a list of event types. #' @param id The id of the element/Shiny tag #' @param expr The R expression or function to run after the event is triggered. #' If a function with an argument is provided, it will be called with the #' JavaScript Event properties as its argument. Using a function can be useful #' when you want to know, for example, what key was pressed on a "keypress" event #' or the mouse coordinates in a mouse event. See below for a list of properties. #' @param add If \code{TRUE}, then add \code{expr} to be executed after any #' other code that was previously set using \code{onevent} or \code{onclick}; otherwise #' \code{expr} will overwrite any previous expressions. Note that this parameter #' works well in web browsers but is buggy when using the RStudio Viewer. #' @param properties A list of JavaScript Event properties that should be available #' to the argument of the \code{expr} function. See below for more information about #' Event properties. #' @param asis If \code{TRUE}, use the ID as-is even when inside a module #' (instead of adding the namespace prefix to the ID). #' @seealso \code{\link[shinyjs]{useShinyjs}}, #' \code{\link[shinyjs]{runExample}} #' @note \code{shinyjs} must be initialized with a call to \code{useShinyjs()} #' in the app's ui. #' @section Event types: #' Any standard \href{http://api.jquery.com/category/events/mouse-events/}{mouse} or #' \href{http://api.jquery.com/category/events/keyboard-events/}{keyboard} events #' that are supported by JQuery can be used. The standard list of events that can be used is: #' \code{click}, \code{dblclick}, \code{hover}, \code{mousedown}, \code{mouseenter}, #' \code{mouseleave}, \code{mousemove}, \code{mouseout}, \code{mouseover}, \code{mouseup}, #' \code{keydown}, \code{keypress}, \code{keyup}. You can also use any other non #' standard events that your browser supports or with the use of plugins (for #' example, there is a \href{https://github.com/jquery/jquery-mousewheel}{mousewheel} #' plugin that you can use to listen to mousewheel events). #' @section Event properties: #' If a function is provided to \code{expr}, the function will receive a list #' of JavaScript Event properties describing the current event as an argument. #' Different properties are available for different event types. The full list #' of porperties that can be returned is: \code{altKey}, \code{button}, #' \code{buttons}, \code{clientX}, \code{clientY}, \code{ctrlKey}, \code{pageX}, #' \code{pageY}, \code{screenX}, \code{screenY}, \code{shiftKey}, \code{which}, #' \code{charCode}, \code{key}, \code{keyCode}, \code{offsetX}, \code{offsetY}. #' If you want to retrieve any additional properties that are available in #' JavaScript for your event type, you can use the \code{properties} parameter. #' @examples #' if (interactive()) { #' library(shiny) #' #' shinyApp( #' ui = fluidPage( #' useShinyjs(), # Set up shinyjs #' p(id = "date", "Click me to see the date"), #' p(id = "coords", "Click me to see the mouse coordinates"), #' p(id = "disappear", "Move your mouse here to make the text below disappear"), #' p(id = "text", "Hello") #' ), #' server = function(input, output) { #' onclick("date", alert(date())) #' onclick("coords", function(event) { alert(event) }) #' onevent("mouseenter", "disappear", hide("text")) #' onevent("mouseleave", "disappear", show("text")) #' } #' ) #' } #' \dontrun{ #' # The shinyjs function call in the above app can be replaced by #' # any of the following examples to produce similar Shiny apps #' onclick("disappear", toggle("text")) #' onclick(expr = text("date", date()), id = "date") #' } #' @name onevent #' @rdname onevent #' @export onclick <- function(id, expr, add = FALSE, asis = FALSE) { oneventHelper("click", id, substitute(expr), add = add, properties = NULL, asis = asis) } #' @rdname onevent #' @export onevent <- function(event, id, expr, add = FALSE, properties = NULL, asis = FALSE) { oneventHelper(event, id, substitute(expr), add, properties, asis = asis) } oneventHelper <- function(event, id, expr, add, properties, asis) { # evaluate expressions in the caller's environment parentFrame <- parent.frame(2) # get the Shiny session session <- getSession() # Make sure onevent works with namespaces (shiny modules) if (inherits(session, "session_proxy")) { if (!asis) { id <- session$ns(id) } } # attach the event callback from JS to call this function to execute the # given expression. To support multiple event handlers, each time this # is called, a random number is attached to the Shiny input id shinyInputId <- sprintf("shinyjs-%s-%s-input-%s", id, as.integer(sample(1e9, 1)), event) shinyInputIdJs <- shinyInputId if (inherits(session, "session_proxy")) { shinyInputIdJs <- session$ns(shinyInputIdJs) } session$sendCustomMessage( "shinyjs-onevent", list( event = event, id = id, shinyInputId = shinyInputIdJs, add = add, customProps = properties ) ) # save the unevaluated expression so that it won't have a static value # every time the given event occurs expr <- deparse(expr) shiny::observeEvent(session$input[[shinyInputId]], { ret <- eval(parse(text = expr), envir = parentFrame) # If a callback function was provided, call it with the event as argument if (is.function(ret)) { if (length(formals(ret)) == 0) { ret() } else { event <- session$input[[shinyInputId]] event[['shinyjsRandom']] <- NULL ret(event) } } # If an expression was provided, evaluate it else { ret } }) invisible(NULL) } shinyjs/R/globals.R0000644000176200001440000000013713542227616013721 0ustar liggesusers# A scope where we can put mutable global variables .globals <- new.env(parent = emptyenv()) shinyjs/R/inlineCSS.R0000644000176200001440000000505613542227616014132 0ustar liggesusers#' Add inline CSS #' #' Add inline CSS to a Shiny app. This is simply a convenience function that #' gets called from a Shiny app's UI to make it less tedious to add inline CSS. #' If there are many CSS rules, it is recommended to use an external stylesheet.\cr\cr #' CSS is a simple way to describe how elements on a web page should be #' displayed (position, colour, size, etc.). You can learn the basics #' at \href{http://www.w3schools.com/css/}{W3Schools}. #' #' @param rules The CSS rules to add. Can either be a string with valid #' CSS code, or a named list of the form #' \code{list(selector = declarations)}, where \code{selector} is a valid #' CSS selector and \code{declarations} is a string or vector of declarations. #' See examples for clarification. #' @return Inline CSS code that is automatically inserted to the app's #' \code{} tag. #' @examples #' if (interactive()) { #' library(shiny) #' #' # Method 1 - passing a string of valid CSS #' shinyApp( #' ui = fluidPage( #' inlineCSS("#big { font-size:30px; } #' .red { color: red; border: 1px solid black;}"), #' p(id = "big", "This will be big"), #' p(class = "red", "This will be red and bordered") #' ), #' server = function(input, output) {} #' ) #' #' # Method 2 - passing a list of CSS selectors/declarations #' # where each declaration is a full declaration block #' shinyApp( #' ui = fluidPage( #' inlineCSS(list( #' "#big" = "font-size:30px", #' ".red" = "color: red; border: 1px solid black;" #' )), #' p(id = "big", "This will be big"), #' p(class = "red", "This will be red and bordered") #' ), #' server = function(input, output) {} #' ) #' #' # Method 3 - passing a list of CSS selectors/declarations #' # where each declaration is a vector of declarations #' shinyApp( #' ui = fluidPage( #' inlineCSS(list( #' "#big" = "font-size:30px", #' ".red" = c("color: red", "border: 1px solid black") #' )), #' p(id = "big", "This will be big"), #' p(class = "red", "This will be red and bordered") #' ), #' server = function(input, output) {} #' ) #' } #' @export inlineCSS <- function(rules) { if (is.list(rules)) { rules <- paste( lapply(names(rules), function(x) { paste0(x, "{", paste(rules[[x]], collapse = ";") , "}") }), collapse = "") } insertHead(shiny::tags$style(shiny::HTML(rules))) } shinyjs/R/reset.R0000644000176200001440000001217613542227616013426 0ustar liggesusers#' Reset input elements to their original values #' #' Reset any input element back to its original value. You can either reset #' one specific input at a time by providing the id of a shiny input, or reset #' all inputs within an HTML tag by providing the id of an HTML tag.\cr\cr #' Reset can be performed on any traditional Shiny input widget, which #' includes: textInput, numericInput, sliderInput, selectInput, #' selectizeInput, radioButtons, dateInput, dateRangeInput, checkboxInput, #' checkboxGroupInput, colourInput, passwordInput, textAreaInput. Note that #' \code{actionButton} is not supported, meaning that you cannot reset #' the value of a button back to 0. #' #' @param id The id of the input element to reset or the id of an HTML #' tag to reset all input elements inside it. #' @seealso \code{\link[shinyjs]{useShinyjs}}, #' \code{\link[shinyjs]{runExample}} #' @note \code{shinyjs} must be initialized with a call to \code{useShinyjs()} #' in the app's ui. #' @examples #' if (interactive()) { #' library(shiny) #' #' shinyApp( #' ui = fluidPage( #' useShinyjs(), #' div( #' id = "form", #' textInput("name", "Name", "Dean"), #' radioButtons("gender", "Gender", c("Male", "Female")), #' selectInput("letter", "Favourite letter", LETTERS) #' ), #' actionButton("resetAll", "Reset all"), #' actionButton("resetName", "Reset name"), #' actionButton("resetGender", "Reset Gender"), #' actionButton("resetLetter", "Reset letter") #' ), #' server = function(input, output) { #' observeEvent(input$resetName, { #' reset("name") #' }) #' observeEvent(input$resetGender, { #' reset("gender") #' }) #' observeEvent(input$resetLetter, { #' reset("letter") #' }) #' observeEvent(input$resetAll, { #' reset("form") #' }) #' } #' ) #' } #' @export reset <- function(id) { # get the Shiny session session <- getSession() # Make sure reset works with namespaces (shiny modules) nsName <- "" if (inherits(session, "session_proxy")) { id <- session$ns(id) nsName <- session$ns("") } # send a call to JavaScript to figure out what elements to reset and what # values to reset them to shinyInputId <- paste0("shinyjs-resettable-", id) shinyInputIdJs <- shinyInputId if (inherits(session, "session_proxy")) { shinyInputIdJs <- session$ns(shinyInputIdJs) } session$sendCustomMessage("shinyjs-reset", list(id = id, shinyInputId = shinyInputIdJs)) # listen for a response from javascript shiny::observeEvent(session$input[[shinyInputId]], once = TRUE, { messages <- session$input[[shinyInputId]] # go through each input element that javascript told us about and call # the corresponding shiny::updateFooInput() with the correct arguments lapply( names(messages), function(x) { type <- messages[[x]][['type']] value <- messages[[x]][['value']] # password inputs don't have an updatePasswordInput, they use text if (type == "Password") { type <- "Text" } updateFunc <- sprintf("update%sInput", type) # Make sure reset works with namespecing (shiny modules) id <- x if (substring(id, 1, nchar(nsName)) == nsName) { id <- substring(id, nchar(nsName) + 1) } funcParams <- list(session, id) # checkbox values need to be manually converted to TRUE/FALSE if (type == "Checkbox") { value <- as.logical(value) } if (type == "Date") { if (value == "NA") { value <- NA } } # most input update functions use 'value' argument, some use 'selected', # DateRange uses 'start' and 'end' if (type == "RadioButtons") { funcParams[['selected']] <- value } else if (type == "CheckboxGroup" || type == "Select") { if (value == '""') { funcParams[['selected']] <- "" } else { funcParams[['selected']] <- jsonlite::fromJSON(value) } } else if (type == "Slider") { value <- unlist(strsplit(value, ",")) funcParams[['value']] <- value } else if (type == "DateRange") { dates <- unlist(strsplit(value, ",")) dates[dates == "NA"] <- NA funcParams[['start']] <- dates[1] funcParams[['end']] <- dates[2] } else { funcParams[['value']] <- value } # radio buttons don't follow the regular shiny input naming conventions if (type == "RadioButtons") { updateFunc <- sprintf("update%s", type) } # for colour inputs, need to use the colourpicker package if (type == "Colour") { updateFunc <- utils::getFromNamespace(updateFunc, "colourpicker") } # update the input to its original values do.call(updateFunc, funcParams) } ) }) invisible(NULL) } shinyjs/R/delay.R0000644000176200001440000000424413542227616013377 0ustar liggesusers#' Execute R code after a specified number of milliseconds has elapsed #' #' You can use \code{delay} if you want to wait a specific amount of time before #' running code. This function can be used in combination with other \code{shinyjs} #' functions, such as hiding or resetting an element in a few seconds, but it #' can also be used with any code as long as it's used inside a Shiny app. #' #' @param ms The number of milliseconds to wait (1000 milliseconds = 1 second) #' before running the expression. #' @param expr The R expression to run after the specified number of milliseconds #' has elapsed. #' #' @seealso \code{\link[shinyjs]{useShinyjs}}, #' \code{\link[shinyjs]{runExample}} #' @note \code{shinyjs} must be initialized with a call to \code{useShinyjs()} #' in the app's ui. #' @examples #' if (interactive()) { #' library(shiny) #' shinyApp( #' ui = fluidPage( #' useShinyjs(), #' p(id = "text", "This text will disappear after 3 seconds"), #' actionButton("close", "Close the app in half a second") #' ), #' server = function(input, output) { #' delay(3000, hide("text")) #' observeEvent(input$close, { #' delay(500, stopApp()) #' }) #' } #' ) #' } #' @export delay <- function(ms, expr) { ms <- round(ms) # get the Shiny session session <- getSession() hashable <- sprintf("%s_%s_%s_%s", ms, as.integer(Sys.time()), as.integer(sample(1e9, 1)), deparse(substitute(expr))) hash <- digest::digest(hashable, algo = "md5") # send a call to JavaScript to let us know when the delay is up shinyInputId <- paste0("shinyjs-delay-", hash) shinyInputIdJs <- shinyInputId if (inherits(session, "session_proxy")) { shinyInputIdJs <- session$ns(shinyInputIdJs) } session$sendCustomMessage("shinyjs-delay", list(ms = ms, shinyInputId = shinyInputIdJs)) # listen for a response from javascript when the delay is up shiny::observeEvent(session$input[[shinyInputId]], once = TRUE, { expr }) invisible(NULL) } shinyjs/R/jsFunc-click.R0000644000176200001440000000230413542227616014607 0ustar liggesusers#' Click on a Shiny button #' #' The \code{click()} function can be used to programatically simulate a click #' on a Shiny \code{actionButton()}. #' #' @param id The id of the button #' @param asis If \code{TRUE}, use the ID as-is even when inside a module #' (instead of adding the namespace prefix to the ID). #' @seealso \code{\link[shinyjs]{useShinyjs}}, #' \code{\link[shinyjs]{runExample}} #' @note \code{shinyjs} must be initialized with a call to \code{useShinyjs()} #' in the app's ui. #' @examples #' if (interactive()) { #' library(shiny) #' #' shinyApp( #' ui = fluidPage( #' useShinyjs(), # Set up shinyjs #' "Count:", textOutput("number", inline = TRUE), br(), #' actionButton("btn", "Click me"), br(), #' "The button will be pressed automatically every 3 seconds" #' ), #' server = function(input, output) { #' output$number <- renderText({ #' input$btn #' }) #' observe({ #' click("btn") #' invalidateLater(3000) #' }) #' } #' ) #' } #' @export click <- function(id, asis = FALSE) { fxn <- "click" params <- list(id = id, asis = asis) jsFuncHelper(fxn, params) } shinyjs/R/extendShinyjs.R0000644000176200001440000003167613542227616015151 0ustar liggesusers#' Extend shinyjs by calling your own JavaScript functions #' #' Add your own JavaScript functions that can be called from R as if they were #' regular R functions. This is a more advanced technique and can only #' be used if you know JavaScript. See 'Basic Usage' below for more information #' or \href{http://deanattali.com/shinyjs}{view the shinyjs webpage} #' to learn more. #' #' @param script Path to a JavaScript file that contains all the functions. #' Each function name must begin with `shinyjs.`, for example #' `shinyjs.myfunc`. See 'Basic Usage' below. #' @param text Inline JavaScript code to use. If your JavaScript function is very #' short and you don't want to create a separate file for it, you can provide the #' code as a string. See 'Basic Usage' below. #' @param functions The names of the shinyjs JavaScript functions which you defined and #' want to be able to call using \code{shinyjs}. Only use this argument if you cannot #' install \code{V8} on your machine. I repeat: do not use this argument if you're #' able to install \code{V8} on your machine. For example, if you defined JavaScript functions #' named \code{shinyjs.foo} and \code{shinyjs.bar}, then use \code{functions = c("foo", "bar")}. #' #' @section Basic Usage: #' Any JavaScript function defined in your script that begins with `shinyjs.` #' will be available to run from R through the `js$` variable. For example, #' if you write a JavaScript function called `shinyjs.myfunc`, then you can #' call it in R with `js$myfunc()`. #' #' It's recommended to write JavaScript code in a separate file and provide the #' filename as the \code{script} argument, but it's also possible to use the #' \code{text} argument to provide a string containing valid JavaScript code. Using the #' \code{text} argument is meant to be used when your JavaScript code is very short #' and simple. #' #' As a simple example, here is a basic example of using \code{extendShinyjs} #' to define a function that changes the colour of the page. #' #' \preformatted{ #' library(shiny) #' library(shinyjs) #' #' jsCode <- "shinyjs.pageCol = function(params){$('body').css('background', params);}" #' #' shinyApp( #' ui = fluidPage( #' useShinyjs(), #' extendShinyjs(text = jsCode), #' selectInput("col", "Colour:", #' c("white", "yellow", "red", "blue", "purple")) #' ), #' server = function(input, output) { #' observeEvent(input$col, { #' js$pageCol(input$col) #' }) #' } #' ) #' } #' #' As the example above shows, after defining the JavaScript function #' \code{shinyjs.pageCol} and passing it to \code{extendShinyjs}, it's possible #' to call \code{js$pageCol()}. #' #' You can add more functions to the JavaScript code, but remember that every #' function you want to use in R has to have a name beginning with #' `shinyjs.`. See the section on passing arguments and the examples below #' for more information on how to write effective functions. #' #' @section Running JavaScript code on page load: #' If there is any JavaScript code that you want to run immediately when the page loads #' rather than having to call it from the server, you can place it inside a #' \code{shinyjs.init} function. The function \code{shinyjs.init} #' will automatically be called when the Shiny app's HTML is initialized. A common #' use for this is when registering event handlers or initializing JavaScript objects, #' as these usually just need to run once when the page loads. #' #' For example, the following example uses \code{shinyjs.init} to register an event #' handler so that every keypress will print its corresponding key code: #' #' \preformatted{ #' jscode <- " #' shinyjs.init = function() { #' $(document).keypress(function(e) { alert('Key pressed: ' + e.which); }); #' }" #' shinyApp( #' ui = fluidPage( #' useShinyjs(), #' extendShinyjs(text = jscode), #' "Press any key" #' ), #' server = function(input, output) {} #' ) #' } #' #' @section Passing arguments from R to JavaScript: #' Any \code{shinyjs} function that is called will pass a single array-like #' parameter to its corresponding JavaScript function. If the function in R was #' called with unnamed arguments, then it will pass an Array of the arguments; #' if the R arguments are named then it will pass an Object with key-value pairs. #' #' For example, calling \code{js$foo("bar", 5)} in R will call \code{shinyjs.foo(["bar", 5])} #' in JS, while calling \code{js$foo(num = 5, id = "bar")} in R will call #' \code{shinyjs.foo({num : 5, id : "bar"})} in JS. This means that the #' \code{shinyjs.foo} function needs to be able to deal with both types of #' parameters. #' #' To assist in normalizing the parameters, \code{shinyjs} provides a #' \code{shinyjs.getParams()} function which serves two purposes. First of all, #' it ensures that all arguments are named (even if the R function was called #' without names). Secondly, it allows you to define default values for arguments. #' #' Here is an example of a JS function that changes the background colour of an #' element and uses \code{shinyjs.getParams()}. #' #' \preformatted{ #' shinyjs.backgroundCol = function(params) { #' var defaultParams = { #' id : null, #' col : "red" #' }; #' params = shinyjs.getParams(params, defaultParams); #' #' var el = $("#" + params.id); #' el.css("background-color", params.col); #' } #' } #' #' Note the \code{defaultParams} object that was defined and the call to #' \code{shinyjs.getParams}. It ensures that calling \code{js$backgroundCol("test", "blue")} #' and \code{js$backgroundCol(id = "test", col = "blue")} and #' \code{js$backgroundCol(col = "blue", id = "test")} are all equivalent, and #' that if the colour parameter is not provided then "red" will be the default. #' #' All the functions provided in \code{shinyjs} make use of \code{shinyjs.getParams}, #' and it is highly recommended to always use it in your functions as well. #' Notice that the order of the arguments in \code{defaultParams} in the #' JavaScript function matches the order of the arguments when calling the #' function in R with unnamed arguments. #' #' See the examples below for a shiny app that uses this JS function. #' @return Scripts that \code{shinyjs} requires in order to run your JavaScript #' functions as if they were R code. #' @note You still need to call \code{useShinyjs()} as usual, and the call to #' \code{useShinyjs()} must come before the call to \code{extendShinyjs()}. #' @note The \code{V8} package is strongly recommended if you use this function. #' @note If you are deploying your app to shinyapps.io and are using \code{extendShinyjs()}, #' then you need to let shinyapps.io know that the \code{V8} package is required. #' The easiest way to do this is by simply including \code{library(V8)} somewhere. #' This is an issue with shinyapps.io that might be resolved by them in the future -- #' see \href{https://github.com/daattali/shinyjs/issues/20}{here} for more details. #' @seealso \code{\link[shinyjs]{runExample}} #' @examples #' \dontrun{ #' Example 1: #' Change the page background to a certain colour when a button is clicked. #' #' jsCode <- "shinyjs.pageCol = function(params){$('body').css('background', params);}" #' #' shinyApp( #' ui = fluidPage( #' useShinyjs(), #' extendShinyjs(text = jsCode), #' selectInput("col", "Colour:", #' c("white", "yellow", "red", "blue", "purple")) #' ), #' server = function(input, output) { #' observeEvent(input$col, { #' js$pageCol(input$col) #' }) #' } #' ) #' #' # If you do not have `V8` package installed, you will need to add another #' # argument to the `extendShinyjs()` function: #' # extendShinyjs(text = jsCode, functions = c("pageCol")) #' #' ============== #' #' Example 2: #' Change the background colour of an element, using "red" as default #' #' jsCode <- ' #' shinyjs.backgroundCol = function(params) { #' var defaultParams = { #' id : null, #' col : "red" #' }; #' params = shinyjs.getParams(params, defaultParams); #' #' var el = $("#" + params.id); #' el.css("background-color", params.col); #' }' #' #' shinyApp( #' ui = fluidPage( #' useShinyjs(), #' extendShinyjs(text = jsCode), #' p(id = "name", "My name is Dean"), #' p(id = "sport", "I like soccer"), #' selectInput("col", "Colour:", #' c("white", "yellow", "red", "blue", "purple")), #' textInput("selector", "Element", "sport"), #' actionButton("btn", "Go") #' ), #' server = function(input, output) { #' observeEvent(input$btn, { #' js$backgroundCol(input$selector, input$col) #' }) #' } #' ) #' #' ============== #' #' Example 3: #' Create an `increment` function that increments the number inside an HTML #' tag (increment by 1 by default, with an optional parameter). Use a separate #' file instead of providing the JS code in a string. #' #' Create a JavaScript file "myfuncs.js": #' shinyjs.increment = function(params) { #' var defaultParams = { #' id : null, #' num : 1 #' }; #' params = shinyjs.getParams(params, defaultParams); #' #' var el = $("#" + params.id); #' el.text(parseInt(el.text()) + params.num); #' } #' #' And a shiny app that uses the custom function we just defined. Note how #' the arguments can be either passed as named or unnamed, and how default #' values are set if no value is given to a parameter. #' #' library(shiny) #' shinyApp( #' ui = fluidPage( #' useShinyjs(), #' extendShinyjs("myfuncs.js"), #' p(id = "number", 0), #' actionButton("add", "js$increment('number')"), #' actionButton("add5", "js$increment('number', 5)"), #' actionButton("add10", "js$increment(num = 10, id = 'number')") #' ), #' server = function(input, output) { #' observeEvent(input$add, { #' js$increment('number') #' }) #' observeEvent(input$add5, { #' js$increment('number', 5) #' }) #' observeEvent(input$add10, { #' js$increment(num = 10, id = 'number') #' }) #' } #' ) #' } #' @export extendShinyjs <- function(script, text, functions) { if (missing(script) && missing(text)) { errMsg("Either `script` or `text` need to be provided.") } # if V8 is not installed, the user must provide the JS function names if (!requireNamespace("V8", quietly = TRUE)) { if (missing(functions)) { errMsg(paste0("In order to use the `extendShinyjs()` function, you must either ", "use the `functions` argument, or install the `V8` package ", "with `install.packages(\"V8\")`.")) } jsFuncs <- functions } # if V8 is installed (preferable method), parse the input for JS functions else { # create a js context with a `shinyjs` object that user-defined functions # can populate ct <- V8::new_context(NULL, FALSE, FALSE) ct$assign("shinyjs", c()) # read functions from a script if (!missing(script)) { if (!file.exists(script)) { errMsg(sprintf("Could not find JavaScript file `%s`.", script)) } tryCatch({ ct$source(script) }, error = function(err) { errMsg(sprintf("Error parsing the JavaScript file: %s.", err$message)) }) } # read functions from in-line text if (!missing(text)) { tryCatch({ ct$eval(text) }, error = function(err) { errMsg(sprintf("Error parsing the JavaScript code provided.", err$message)) }) } # find out what functions the user defined jsFuncs <- ct$get(V8::JS("Object.keys(shinyjs)")) if (length(jsFuncs) == 0) { errMsg(paste0("Could not find any shinyjs functions in the JavaScript file. ", "Did you remember to prepend every function's name with `shinyjs.`?")) } } # add all the given functions to the shinyjs namespace so that they can be # called as if they were regular shinyjs functions lapply(jsFuncs, function(x) { assign(x, jsFunc, js) }) # Add the script as a resource if (!missing(script)) { if (!file.exists(script)) { errMsg(sprintf("Could not find JavaScript file `%s`.", script)) } shiny::addResourcePath("shinyjs-extend", dirname(script)) script <- file.path("shinyjs-extend", basename(script)) } # set up the message handlers for all functions setupJS(jsFuncs, script, text) } #' Call user-defined JavaScript functions from R #' @seealso \code{\link[shinyjs]{extendShinyjs}} #' @export #' @keywords internal js <- new.env() shinyjs/R/useShinyjs.R0000644000176200001440000001004513606735556014451 0ustar liggesusers#' Set up a Shiny app to use shinyjs #' #' This function must be called from a Shiny app's UI in order for all other #' \code{shinyjs} functions to work.\cr\cr #' You can call \code{useShinyjs()} from anywhere inside the UI, as long as the #' final app UI contains the result of \code{useShinyjs()}. #' #' If you're a package author and including \code{shinyjs} in a function in your #' your package, you need to make sure \code{useShinyjs()} is called either by #' the end user's Shiny app or by your function's UI. #' #' @param rmd Set this to \code{TRUE} only if you are using \code{shinyjs} #' inside an interactive R markdown document. If using this option, view the #' \href{https://github.com/daattali/shinyjs}{README} online to learn how to #' use shinyjs in R markdown documents. #' @param debug Set this to \code{TRUE} if you want to see detailed debugging #' statements in the JavaScript console. Can be useful when filing bug reports #' to get more information about what is going on. #' @param html Set this to \code{TRUE} only if you are using \code{shinyjs} in #' a Shiny app that builds the entire user interface with a custom HTML file. If #' using this option, view the #' \href{https://github.com/daattali/shinyjs}{README} online to learn #' how to use shinyjs in these apps. #' @param showLog Deprecated. #' @return Scripts that \code{shinyjs} requires that are automatically inserted #' to the app's \code{} tag. A side effect of calling this function is that #' a \code{shinyjs} directory is added as a resource path using #' \link[shiny]{addResourcePath}. #' @examples #' if (interactive()) { #' library(shiny) #' #' shinyApp( #' ui = fluidPage( #' useShinyjs(), # Set up shinyjs #' actionButton("btn", "Click me"), #' textInput("element", "Watch what happens to me") #' ), #' server = function(input, output) { #' observeEvent(input$btn, { #' # Run a simply shinyjs function #' toggle("element") #' }) #' } #' ) #' } #' @seealso \code{\link[shinyjs]{runExample}} #' \code{\link[shinyjs]{extendShinyjs}} #' @export useShinyjs <- function(rmd = FALSE, debug = FALSE, html = FALSE, showLog = NULL) { stopifnot(rmd == TRUE || rmd == FALSE) stopifnot(debug == TRUE || debug == FALSE) stopifnot(html == TRUE || html == FALSE) if (!missing(showLog)) { warning("'useShinyjs(showLog = TRUE)' has been deprecated. You do not need to call it anymore.", call. = FALSE) } # `astext` is FALSE in normal shiny apps where the shinyjs content is returned # as a shiny tag that gets rendered by the Shiny UI, and TRUE in interactive # Rmarkdown documents or in Shiny apps where the user builds the entire UI # manually with HTML, because in those cases the content of shinyjs needs to # be returned as plain text that can be added to the HTML .globals$astext <- rmd || html # inject is TRUE when the user builds the entire UI manually with HTML, # because in that case the shinyjs content needs to be injected into the page # using JavaScript .globals$inject <- html # all the default shinyjs methods that should be forwarded to javascript jsFuncs <- c("show", "hide", "toggle", "enable", "disable", "toggleState", "addClass", "removeClass", "toggleClass", "html", "onevent", "alert", "logjs", "runjs", "reset", "delay", "click") # grab the file with all the default shinyjs javascript functions shiny::addResourcePath("shinyjs", system.file("srcjs", package = "shinyjs")) jsFile <- file.path("shinyjs", "shinyjs-default-funcs.js") # JavaScript to include to turn debug mode on/off (used for seeing more messages) if (debug) { initJS <- "shinyjs.debug = true;" } else { initJS <- "shinyjs.debug = false;" } # include CSS for hiding elements initCSS <- inlineCSS(".shinyjs-hide { display: none !important; }") # set up the message handlers and add some initial JS and CSS setupJS(jsFuncs, jsFile, initJS, initCSS) } shinyjs/R/jsFunc-messageFuncs.R0000644000176200001440000000344313542227616016152 0ustar liggesusers#' Show a message #' #' \code{alert} (and its alias \code{info}) shows a message to the user as a #' simple popup.\cr\cr #' \code{logjs} writes a message to the JavaScript console. \code{logjs} is #' mainly used for debugging purposes as a way to non-intrusively print #' messages, but it is also visible to the user if they choose to inspect the #' console. You can also use the \code{\link[shinyjs]{showLog}} function to #' print the JavaScript message directly to the R console. #' #' @param text The message to show. Can be either simple text or an R object. #' @seealso \code{\link[shinyjs]{useShinyjs}}, #' \code{\link[shinyjs]{runExample}}, #' \code{\link[shinyjs]{showLog}} #' @note \code{shinyjs} must be initialized with a call to \code{useShinyjs()} #' in the app's ui. #' @examples #' if (interactive()) { #' library(shiny) #' shinyApp( #' ui = fluidPage( #' useShinyjs(), # Set up shinyjs #' actionButton("btn", "Click me") #' ), #' server = function(input, output) { #' observeEvent(input$btn, { #' # Change the following line for more examples #' alert(paste0("The date is ", date())) #' }) #' } #' ) #' } #' \dontrun{ #' # The shinyjs function call in the above app can be replaced by #' # any of the following examples to produce similar Shiny apps #' alert("Hello!") #' alert(text = R.Version()) #' logjs(R.Version()) #' } #' @name messageFuncs NULL #' @export #' @rdname messageFuncs alert <- function(text) { fxn <- "alert" params <- list(text = text) jsFuncHelper(fxn, params) } #' @export #' @rdname messageFuncs info <- alert #' @export #' @rdname messageFuncs logjs <- function(text) { fxn <- "logjs" params <- list(text = text) jsFuncHelper(fxn, params) } shinyjs/R/runExample.R0000644000176200001440000000242613542227616014421 0ustar liggesusers#' Run shinyjs examples #' #' Launch a \code{shinyjs} example Shiny app that shows how to #' easily use \code{shinyjs} in an app.\cr\cr #' Run without any arguments to see a list of available example apps. #' The "demo" example is also #' \href{http://daattali.com/shiny/shinyjs-demo/}{available online} #' to experiment with. #' #' @param example The app to launch #' @examples #' ## Only run this example in interactive R sessions #' if (interactive()) { #' # List all available example apps #' runExample() #' #' runExample("sandbox") #' runExample("demo") #' } #' @export runExample <- function(example) { validExamples <- paste0( 'Valid examples are: "', paste(list.files(system.file("examples", package = "shinyjs")), collapse = '", "'), '"') if (missing(example) || !nzchar(example)) { message( 'Please run `runExample()` with a valid example app as an argument.\n', validExamples) return(invisible(NULL)) } appDir <- system.file("examples", example, package = "shinyjs") if (appDir == "") { errMsg(sprintf("could not find example app `%s`\n%s", example, validExamples)) } shiny::runApp(appDir, display.mode = "normal") } shinyjs/R/jsFunc-classFuncs.R0000644000176200001440000001111713542227616015630 0ustar liggesusers#' Add/remove CSS class #' #' Add or remove a CSS class from an HTML element.\cr\cr #' \strong{\code{addClass}} adds a CSS class, \strong{\code{removeClass}} #' removes a CSS class, \strong{\code{toggleClass}} adds the class if it is #' not set and removes the class if it is already set.\cr\cr #' \strong{\code{addCssClass}}, \strong{\code{removeCssClass}}, and #' \strong{\code{toggleCssClass}} are synonyms that may be safer to use if you're #' working with S4 classes (since they don't mask any existing S4 functions).\cr\cr #' If \code{condition} is given to \code{toggleClass}, that condition will be used #' to determine if to add or remove the class. The class will be added if the #' condition evaluates to \code{TRUE} and removed otherwise. If you find #' yourself writing code such as \code{if (test()) addClass(id, cl) else removeClass(id, cl)} #' then you can use \code{toggleClass} instead: \code{toggleClass(id, cl, test())}.\cr\cr #' CSS is a simple way to describe how elements on a web page should be #' displayed (position, colour, size, etc.). You can learn the basics #' at \href{http://www.w3schools.com/css/}{W3Schools}. #' #' @note If you use S4 classes, you should be aware of the fact that both S4 and #' \code{shinyjs} use the \code{removeClass()} function. This means that when using S4, #' it is recommended to use \code{removeCssClass()} from \code{shinyjs}, and to #' use \code{methods::removeClass()} for S4 object. #' #' @param id The id of the element/Shiny tag #' @param class The CSS class to add/remove #' @param condition An optional argument to \code{toggleClass}, see 'Details' below. #' @param selector JQuery selector of the elements to target. Ignored if the \code{id} #' argument is given. For example, to add a certain class to all inputs with class x, #' use \code{selector = "input.x"} #' @param asis If \code{TRUE}, use the ID as-is even when inside a module #' (instead of adding the namespace prefix to the ID). #' @seealso \code{\link[shinyjs]{useShinyjs}}, #' \code{\link[shinyjs]{runExample}}, #' \code{\link[shinyjs]{inlineCSS}}, #' @note \code{shinyjs} must be initialized with a call to \code{useShinyjs()} #' in the app's ui. #' @examples #' if (interactive()) { #' library(shiny) #' #' shinyApp( #' ui = fluidPage( #' useShinyjs(), # Set up shinyjs #' # Add a CSS class for red text colour #' inlineCSS(list(.red = "background: red")), #' actionButton("btn", "Click me"), #' p(id = "element", "Watch what happens to me") #' ), #' server = function(input, output) { #' observeEvent(input$btn, { #' # Change the following line for more examples #' toggleClass("element", "red") #' }) #' } #' ) #' } #' \dontrun{ #' # The shinyjs function call in the above app can be replaced by #' # any of the following examples to produce similar Shiny apps #' toggleClass(class = "red", id = "element") #' addClass("element", "red") #' removeClass("element", "red") #' } #' #' ## toggleClass can be given an optional `condition` argument, which #' ## determines if to add or remove the class #' if (interactive()) { #' shinyApp( #' ui = fluidPage( #' useShinyjs(), #' inlineCSS(list(.red = "background: red")), #' checkboxInput("checkbox", "Make it red"), #' p(id = "element", "Watch what happens to me") #' ), #' server = function(input, output) { #' observe({ #' toggleClass(id = "element", class = "red", #' condition = input$checkbox) #' }) #' } #' ) #' } #' @name classFuncs NULL #' @export #' @rdname classFuncs addClass <- function(id = NULL, class = NULL, selector = NULL, asis = FALSE) { fxn <- "addClass" params <- list(id = id, class = class, selector = selector, asis = asis) jsFuncHelper(fxn, params) } #' @export #' @rdname classFuncs addCssClass <- addClass #' @export #' @rdname classFuncs removeClass <- function(id = NULL, class = NULL, selector = NULL, asis = FALSE) { fxn <- "removeClass" params <- list(id = id, class = class, selector = selector, asis = asis) jsFuncHelper(fxn, params) } #' @export #' @rdname classFuncs removeCssClass <- removeClass #' @export #' @rdname classFuncs toggleClass <- function(id = NULL, class = NULL, condition = NULL, selector = NULL, asis = FALSE) { fxn <- "toggleClass" params <- list(id = id, class = class, condition = condition, selector = selector, asis = asis) jsFuncHelper(fxn, params) } #' @export #' @rdname classFuncs toggleCssClass <- toggleClassshinyjs/R/defunct-colourInput.R0000644000176200001440000000131713542227616016250 0ustar liggesusers#' @rdname shinyjs-defunct #' @export #' @keywords internal colourInput <- function(...) { .Defunct("colourInput", package = "colourpicker", msg = "colourInput() has been moved to the 'colourpicker' package.") } #' @rdname shinyjs-defunct #' @export #' @keywords internal updateColourInput <- function(...) { .Defunct("updateColourInput", package = "colourpicker", msg = "updateColourInput() has been moved to the 'colourpicker' package.") } #' @rdname shinyjs-defunct #' @export #' @keywords internal colourPicker <- function(...) { .Defunct("colourPicker", package = "colourpicker", msg = "colourPicker() has been moved to the 'colourpicker' package.") }shinyjs/R/runcode.R0000644000176200001440000001135413542227616013740 0ustar liggesusers#' Construct to let you run arbitrary R code live in a Shiny app #' #' Sometimes when developing a Shiny app, it's useful to be able to run some R #' code on-demand. This construct provides your app with a text input where you #' can enter any R code and run it immediately.\cr\cr #' This can be useful for testing #' and while developing an app locally, but it \strong{should not be included in #' an app that is accessible to other people}, as letting others run arbitrary R #' code can open you up to security attacks.\cr\cr #' To use this construct, you must add a call to \code{runcodeUI()} in the UI #' of your app, and a call to \code{runcodeServer()} in the server function. You #' also need to initialize shinyjs with a call to \code{useShinyjs()} in the UI. #' #' @note You can only have one \code{runcode} construct in your shiny app. #' Calling this function multiple times within the same app will result in #' unpredictable behaviour. #' #' @param code The initial R code to show in the text input when the app loads #' @param type One of \code{"text"} (default), \code{"textarea"}, or \code{"ace"}. #' When using a text input, the R code will be limited to be typed within a single line, #' and is the recommended option. Textarea should be used if you want to write #' long multi-line R code. Note that you can run multiple expressions even in #' a single line by appending each R expression with a semicolon. #' Use of the \code{"ace"} option requires the \code{shinyAce} package. #' @param width The width of the editable code input (ignored when #' \code{type="ace"}) #' @param height The height of the editable code input (ignored when #' \code{type="text"}) #' @param includeShinyjs Deprecated. You should always make sure to initialize #' shinyjs using \code{\link[shinyjs]{useShinyjs}}. #' @param id When used inside a shiny module, the module's id needs to be #' provided to \code{runcodeUI}. This argument should remain \code{NULL} #' when not used inside a module. #' @seealso \code{\link[shinyjs]{useShinyjs}} #' @examples #' if (interactive()) { #' library(shiny) #' #' shinyApp( #' ui = fluidPage( #' useShinyjs(), # Set up shinyjs #' runcodeUI(code = "shinyjs::alert('Hello!')") #' ), #' server = function(input, output) { #' runcodeServer() #' } #' ) #' } #' @name runcode #' @rdname runcode #' @export runcodeUI <- function(code = "", type = c("text", "textarea", "ace"), width = NULL, height = NULL, includeShinyjs = NULL, id = NULL) { ns <- shiny::NS(id) if (!missing(includeShinyjs)) { warning("`includeShinyjs` argument is deprecated. You should always make ", "sure to initialize shinyjs using `useShinyjs()`.") } type <- match.arg(type) if (type == "ace") { if (!requireNamespace("shinyAce", quietly = TRUE)) { errMsg("You need to install the 'shinyAce' package in order to use 'shinyAce' editor.") } } placeholder <- "Enter R code" shiny::singleton(shiny::tagList( if (type == "text") shiny::textInput( ns("runcode_expr"), label = NULL, value = code, width = width, placeholder = placeholder ), if (type == "textarea") shiny::textAreaInput( ns("runcode_expr"), label = NULL, value = code, width = width, height = height, placeholder = placeholder ), if (type == "ace") shinyAce::aceEditor(ns("runcode_expr"), mode = 'r', value = code, height = height, theme = "github", fontSize = 16), shiny::actionButton(ns("runcode_run"), "Run", class = "btn-success"), shinyjs::hidden( shiny::div( id = ns("runcode_error"), style = "color: red; font-weight: bold;", shiny::div("Oops, that resulted in an error! Try again."), shiny::div("Error: ", shiny::br(), shiny::tags$i(shiny::span( id = ns("runcode_errorMsg"), style = "margin-left: 10px;"))) ) ) )) } #' @rdname runcode #' @export runcodeServer <- function() { # evaluate expressions in the caller's environment parentFrame <- parent.frame(1) # get the Shiny session session <- getSession() shiny::observeEvent(session$input[['runcode_run']], { shinyjs::hide("runcode_error") tryCatch( shiny::isolate( eval(parse(text = session$input[['runcode_expr']]), envir = parentFrame) ), error = function(err) { shinyjs::html("runcode_errorMsg", as.character(err$message)) shinyjs::show(id = "runcode_error", anim = TRUE, animType = "fade") } ) }) invisible(NULL) } shinyjs/R/shinyjs.R0000644000176200001440000000211213542227616013760 0ustar liggesusers#' shinyjs #' #' Easily improve the user experience of your Shiny apps in seconds #' #' \code{shinyjs} lets you perform common JavaScript operations that enhance the user experience in #' applications without having to know any JavaScript. Examples include: hiding an #' element, disabling an input, resetting an input back to its original value, #' delaying code execution by a few seconds, and many more useful functions. #' \code{shinyjs} also includes a colour picker widget, a colour picker RStudio #' addin, and can also be used to easily run your own custom JavaScript functions #' from R. #' #' View the \href{http://deanattali.com/shinyjs}{shinyjs website} for more details #' and to see a demo. #' @docType package #' @name shinyjs NULL #' Defunct functions in shinyjs #' #' \itemize{ #' \item{\bold{colourInput()}} {Moved to the \code{colourpicker} package.} #' \item{\bold{updateColourInput()}} {Moved to the \code{colourpicker} package.} #' \item{\bold{colourPicker()}} {Moved to the \code{colourpicker} package.} #' } #' #' @name shinyjs-defunct NULLshinyjs/R/showLog.R0000644000176200001440000000430313542227616013717 0ustar liggesusers#' Print any JavaScript console.log messages in the R console #' #' When developing and debugging a Shiny that uses custom JavaScript code, #' it can be helpful to use \code{console.log()} messages in JavaScript. This #' function allows you to see these messages printed in the R console directly #' rather than having to open the JavaScript console in the browser to view the #' messages.\cr\cr #' This function must be called in a Shiny app's server function, and you also #' need to pass the \code{showLog=TRUE} parameter to \code{useShinyjs()}. #' @note Due to an issue in shiny (see #' https://github.com/rstudio/shiny/issues/928), duplicated consecutive log #' messages will not get printed in R. #' @note Log messages that cannot be serialized in JavaScript (such as many #' JavaScript Event objects that are cyclic) will not be printed in R. #' @examples #' if (interactive()) { #' library(shiny) #' #' shinyApp( #' ui = fluidPage( #' useShinyjs(), #' textInput("text", "Type something") #' ), #' server = function(input, output) { #' showLog() #' logjs("App started") #' observe({ #' logjs(paste("Length of text:", nchar(input$text))) #' }) #' } #' ) #' } #' @seealso \code{\link[shinyjs]{logjs}} #' @export showLog <- function() { session <- getSession() if (!is.null(attr(session, "shinyjs_showLog"))) { return() } attr(session, "shinyjs_showLog") <- TRUE # Capture the console.log function and overwrite it to send the message to R shiny::insertUI("head", "beforeEnd", { shiny::singleton(shiny::tags$head(shiny::tags$script( '(function(){ var oldLog = console.log; var queue = new ShinySenderQueue(); console.log = function (message) { try { queue.send("shinyjs-showLog", message); } catch(err) {} oldLog.apply(console, arguments); }; })();' ))) }, immediate = TRUE) shiny::observeEvent(session$input[['shinyjs-showLog']], { message("JAVASCRIPT LOG: ", jsonlite::toJSON(session$input[['shinyjs-showLog']], auto_unbox = TRUE) ) }) } shinyjs/R/disabled.R0000644000176200001440000000353713542227616014054 0ustar liggesusers#' Initialize a Shiny input as disabled #' #' Create a Shiny input that is disabled when the Shiny app starts. The input can #' be enabled later with \code{shinyjs::toggleState} or \code{shinyjs::enable}. #' #' @param ... Shiny input (or tagList or list of of tags that include inputs) to #' disable. #' @seealso \code{\link[shinyjs]{useShinyjs}}, #' \code{\link[shinyjs]{toggleState}}, #' \code{\link[shinyjs]{enable}}, #' \code{\link[shinyjs]{disable}} #' @note \code{shinyjs} must be initialized with a call to \code{useShinyjs()} #' in the app's ui. #' @return The tag (or tags) that was given as an argument in a disabled state. #' @examples #' if (interactive()) { #' library(shiny) #' shinyApp( #' ui = fluidPage( #' useShinyjs(), # Set up shinyjs #' actionButton("btn", "Click me"), #' disabled( #' textInput("element", NULL, "I was born disabled") #' ) #' ), #' server = function(input, output) { #' observeEvent(input$btn, { #' enable("element") #' }) #' } #' ) #' } #' #' library(shiny) #' disabled(numericInput("num", NULL, 5), dateInput("date", NULL)) #' @export disabled <- function(...) { tags <- list(...) # recursively add the disabled class to all tags if (length(tags) == 1 && inherits(tags[[1]], "shiny.tag")) { # don't do anything if an input has a head tag associated to it if (tags[[1]][['name']] == "head") { return(tags[[1]]) } tags[[1]] <- shiny::tagAppendAttributes( tags[[1]], class = "shinyjs-disabled" ) return( tags[[1]] ) } else if (length(tags) == 1 && is.list(tags[[1]])) { return( lapply(tags[[1]], disabled) ) } else if (length(tags) > 1) { return( lapply(tags, disabled) ) } else { errMsg("Invalid shiny tags given to `disabled`") } } shinyjs/R/jsFunc-visibilityFuncs.R0000644000176200001440000001162113542227616016712 0ustar liggesusers#' Display/hide an element #' #' Display or hide an HTML element.\cr\cr #' \strong{\code{show}} makes an element visible, \strong{\code{hide}} makes #' an element invisible, \strong{\code{toggle}} displays the element if it it #' hidden and hides it if it is visible.\cr\cr #' \strong{\code{showElement}}, \strong{\code{hideElement}}, and #' \strong{\code{toggleElement}} are synonyms that may be safer to use if you're #' working with S4 classes (since they don't mask any existing S4 functions).\cr\cr #' If \code{condition} is given to \code{toggle}, that condition will be used #' to determine if to show or hide the element. The element will be shown if the #' condition evaluates to \code{TRUE} and hidden otherwise. If you find #' yourself writing code such as \code{if (test()) show(id) else hide(id)} #' then you can use \code{toggle} instead: \code{toggle(id = id, condition = test())}. #' #' If you want to hide/show an element in a few seconds rather than immediately, #' you can use the \code{\link[shinyjs]{delay}} function. #' #' @note If you use S4 classes, you should be aware of the fact that both S4 and #' \code{shinyjs} use the \code{show()} function. This means that when using S4, #' it is recommended to use \code{showElement()} from \code{shinyjs}, and to #' use \code{methods::show()} for S4 object. #' #' @param id The id of the element/Shiny tag #' @param anim If \code{TRUE} then animate the behaviour #' @param animType The type of animation to use, either \code{"slide"} or \code{"fade"} #' @param time The number of seconds to make the animation last #' @param selector JQuery selector of the elements to show/hide. Ignored if the #' \code{id} argument is given. For example, to select all span elements with #' class x, use \code{selector = "span.x"} #' @param condition An optional argument to \code{toggle}, see 'Details' below. #' @param asis If \code{TRUE}, use the ID as-is even when inside a module #' (instead of adding the namespace prefix to the ID). #' @seealso \code{\link[shinyjs]{useShinyjs}}, #' \code{\link[shinyjs]{runExample}}, #' \code{\link[shinyjs]{hidden}}, #' \code{\link[shinyjs]{delay}} #' @note \code{shinyjs} must be initialized with a call to \code{useShinyjs()} #' in the app's ui. #' @examples #' if (interactive()) { #' library(shiny) #' #' shinyApp( #' ui = fluidPage( #' useShinyjs(), # Set up shinyjs #' actionButton("btn", "Click me"), #' textInput("text", "Text") #' ), #' server = function(input, output) { #' observeEvent(input$btn, { #' # Change the following line for more examples #' toggle("text") #' }) #' } #' ) #' } #' \dontrun{ #' # The shinyjs function call in the above app can be replaced by #' # any of the following examples to produce similar Shiny apps #' toggle(id = "text") #' delay(1000, toggle(id = "text")) # toggle in 1 second #' toggle("text", TRUE) #' toggle("text", TRUE, "fade", 2) #' toggle(id = "text", time = 1, anim = TRUE, animType = "slide") #' show("text") #' show(id = "text", anim = TRUE) #' hide("text") #' hide(id = "text", anim = TRUE) #' } #' #' ## toggle can be given an optional `condition` argument, which #' ## determines if to show or hide the element #' if (interactive()) { #' shinyApp( #' ui = fluidPage( #' useShinyjs(), #' checkboxInput("checkbox", "Show the text", TRUE), #' p(id = "element", "Watch what happens to me") #' ), #' server = function(input, output) { #' observe({ #' toggle(id = "element", condition = input$checkbox) #' }) #' } #' ) #' } #' @name visibilityFuncs NULL #' @export #' @rdname visibilityFuncs show <- function(id = NULL, anim = FALSE, animType = "slide", time = 0.5, selector = NULL, asis = FALSE) { fxn <- "show" params <- list(id = id, anim = anim, animType = animType, time = time, selector = selector, asis = asis) jsFuncHelper(fxn, params) } #' @export #' @rdname visibilityFuncs showElement <- show #' @export #' @rdname visibilityFuncs hide <- function(id = NULL, anim = FALSE, animType = "slide", time = 0.5, selector = NULL, asis = FALSE) { fxn <- "hide" params <- list(id = id, anim = anim, animType = animType, time = time, selector = selector, asis = asis) jsFuncHelper(fxn, params) } #' @export #' @rdname visibilityFuncs hideElement <- hide #' @export #' @rdname visibilityFuncs toggle <- function(id = NULL, anim = FALSE, animType = "slide", time = 0.5, selector = NULL, condition = NULL, asis = FALSE) { fxn <- "toggle" params <- list(id = id, anim = anim, animType = animType, time = time, selector = selector, condition = condition, asis = asis) jsFuncHelper(fxn, params) } #' @export #' @rdname visibilityFuncs toggleElement <- toggle shinyjs/R/hidden.R0000644000176200001440000000332613542227616013534 0ustar liggesusers#' Initialize a Shiny tag as hidden #' #' Create a Shiny tag that is invisible when the Shiny app starts. The tag can #' be made visible later with \code{shinyjs::toggle} or \code{shinyjs::show}. #' #' @param ... Shiny tag (or tagList or list of of tags) to make invisible #' @seealso \code{\link[shinyjs]{useShinyjs}}, #' \code{\link[shinyjs]{toggle}}, #' \code{\link[shinyjs]{show}}, #' \code{\link[shinyjs]{hide}} #' @note \code{shinyjs} must be initialized with a call to \code{useShinyjs()} #' in the app's ui. #' @return The tag (or tags) that was given as an argument in a hidden state. #' @examples #' if (interactive()) { #' library(shiny) #' shinyApp( #' ui = fluidPage( #' useShinyjs(), # Set up shinyjs #' actionButton("btn", "Click me"), #' hidden( #' p(id = "element", "I was born invisible") #' ) #' ), #' server = function(input, output) { #' observeEvent(input$btn, { #' show("element") #' }) #' } #' ) #' } #' #' library(shiny) #' hidden(span(id = "a"), div(id = "b")) #' hidden(tagList(span(id = "a"), div(id = "b"))) #' hidden(list(span(id = "a"), div(id = "b"))) #' @export hidden <- function(...) { tags <- list(...) # recursively add the hidden class to all tags if (length(tags) == 1 && inherits(tags[[1]], "shiny.tag")) { tags[[1]] <- shiny::tagAppendAttributes( tags[[1]], class = "shinyjs-hide" ) return( tags[[1]] ) } else if (length(tags) == 1 && is.list(tags[[1]])) { return( lapply(tags[[1]], hidden) ) } else if (length(tags) > 1) { return( lapply(tags, hidden) ) } else { errMsg("Invalid shiny tags given to `hidden`") } } shinyjs/NEWS.md0000644000176200001440000003675413606736754013077 0ustar liggesusers# shinyjs 1.1 2020-01-12 - **BREAKING CHANGE** The `includeShinyjs` parameter in `runcodeUI()` is now deprecated - Fix bug: shinyjs functions used inside a module with a `selector` argument instead of an `id` argument didn't work (#175) - Fix bug: shinyjs functions did not work with IDs that had a space in them (#176) - Fix bug: non-selectize select inputs could not be disabled (#186) - Fix bug: `click()` now works with download buttons (#198) - New feature: added `asis` parameter to any function that takes an ID. When `asis=TRUE`, the ID will not be namespaced when inside a module (#118) - New feature: added `id` parameter to `runcode()`, allowing it to work inside Shiny modules (#184) - New feature: `onevent()` returns the `offsetX` and `offsetY` event properties - New feature: `onevent()` accepts a `properties` parameter that allows the user to retrieve additional properties that are not whitelisted by default (#159) - New feature: `hide()`/`show()` now only bubble up the DOM tree to the nearest input container if the current element is an input (#153) - Documentation: added documentation about `useShinyjs()` side effects and about including `shinyjs` in packages (#182) # shinyjs 1.0 2018-01-08 - **BREAKING CHANGE** shiny version 1.0.0 is now required - **BREAKING CHANGE** All `colourInput`-related functions are now defunct because they are now in the `colourpicker` package - Added `click()` function that simulates a user clicking on a button - Bug fix: `reset()` wasn't working on checkboxes/select inputs that had a comma in the value (#130) - Bug fix: using `disabled()` on certain non-standard inputs (such as `shinyFiles`) had strange behaviour (#120) - Bug fix: `logjs()`+`showLog()` wasn't working when app first runs - Bug fix: `reset()` wasn't working on file inputs with an ID that contained a dot (#140) - Moved default values of parameters to the R layer instead of being defined in javascript. This means that RStudio no longer complains of missing arguments and that autocompletion will show default values. (#80) - Improve efficiency of `delay()` and `reset()` functions - Improve documentation and website (https://deanattali.com/shinyjs) # shinyjs 0.9 2016-12-26 - added support for shinyAce editor as the input for `runcodeUI()` (#93) - `showLog()` no longer needs to be specified in `useShinyjs()`, and it can be used by just calling it in the server code once (#105) - fixed bug where `showLog()` would only show the last message if multiple messages were printed in succession (#99) - fixed bug where date inputs could not be reset to empty (#100) - fixed textArea inputs not getting disabled when disabling a parent element - add `showElement()`/`hideElement()`/`toggleElement()` and `addCssClass` etc functions as synonyms for functions that are masked by S4 (compromise for #81) - fixed broken `runExample("sandbox")` example - added a website for shinyjs: http://deanattali.com/shinyjs # shinyjs 0.8 2016-11-03 - added `runcodeUI()` and `runcodeServer()` functions that you can add to your app in order to run arbitrary R code interactively - added `showLog()` function which lets you redirect all JavaScript logging statements to the R console, to make it easier and quicker to debug apps without having to open the JS console (#88) - `onclick` and `onevent` now support callback functions, and the JavaScript Event object is passed to the callback (#92) - the `reset()` function now works on file inputs - added `alert()` as an alias for `info()` # shinyjs 0.7 2016-08-20 - All the colourpicker/colourInput related functions are now deprecated because I've made a more appropriate package for them [`colourpicker`](https://github.com/daattali/colourpicker) - Use updated colourpicker JS library that fixes bugs with new jquery version - Add reset support for `passwordInput` and `textAreaInput` (#78) # shinyjs 0.6.2 2016-07-25 - Improved UI of demo shiny apps and added social media meta tags and github fork ribbons # shinyjs 0.6.1 2016-05-09 - Added `selector` argument to `html()` function # shinyjs 0.6 2016-04-24 - `info()` function: don't include surrounding quotations if not necessary (#59) - added documentation for how to use `shinyjs` in HTML templates # shinyjs 0.5.3 2016-04-05 - Fixed bug with `extendShinyjs()` where it didn't work when using a script and didn't have `V8` installed (#64) # shinyjs 0.5.2 2016-03-25 - Added `numCols` parameter to the `colourPicker()` gadget # shinyjs 0.5.1 2016-03-23 - Added `returnName` parameter to `colourInput()`, which lets you get an R colour name instead of HEX value as the return value (#62) # shinyjs 0.5.0 2016-03-19 - Added an awesome colour picker gadget and addin. Use `colourPicker()` to open a gadget that lets you pick colours, or choose *Colour Picker* from the *Addins* menu to run it. # shinyjs 0.4.1 2016-01-31 - `html()` function: don't attempt to change innerHTML if the element does not exist # shinyjs 0.4.0 2016-01-16 - **BREAKING CHANGE**: the `text` function has been renamed to `html` (#42) - shinyjs now works with the new modules feature of Shiny (#50) - Refactor how shinyjs R engine works: instead of using cool meta programming that minimizes code and sends each shinyjs function request straight to JS, add a thin layer or R code for each function. This allows us to check the arguments, run custom code for each function, it allows the documentation to show the arguments instead of them being `...`, and it fixes a few edge cases of calling shinyjs functions, such as calling shinyjs using `do.call()` (#51) - Update vignette/readme to include FAQ - Change internally the name of shinyjs functions to make the JavaScript function names more unique to avoid potential conflicts with user-defined JS functions # shinyjs 0.3.2 2016-01-08 - Show warning when using Shiny modules because they aren't supported yet # shinyjs 0.3.0 2015-12-30 - bug fix: `hidden()` now works when used on an element with a `display` CSS property # shinyjs 0.2.6 2015-12-14 - bug fix: `show`/`hide` always trigger shown/hidden events # shinyjs 0.2.5 2015-12-14 - small UI change to colourInput demo shiny app # shinyjs 0.2.4 2015-12-01 - Support `extendShinyjs()` for users that cannot install the `V8` package # shinyjs 0.2.3 2015-11-05 - Updated README # shinyjs 0.2.2 2015-09-15 - added `html` argument to `useShinyjs()`, which adds support for using shinyjs in shiny apps that are built with index.html instead of using Shiny UI (more details in the README) - refactored internally how shinyjs resources are handled so that the resource path is now prefixed with "shinyjs" or "shinyjs-extend" instead of a random string # shinyjs 0.2.1 2015-09-13 - add a `debug` parameter to `useShinyjs` that will cause detailed debugging messages to be printed to the JavaScript console when turned on # shinyjs 0.2.0 2015-09-05 - version bump for CRAN submission # shinyjs 0.1.4 2015-09-05 - refactor JavaScript code to remove code duplication and add better internal documentation - bug fix: `disabled` now works with all input types - bug fix: `enable`/`disable` did not work on `selectInput`, `sliderInput`, and `actionButton` - bug fix: resetting a slider input with a range did not reset the end point, only the start point # shinyjs 0.1.3 2015-09-05 - `onclick` and `onevent` now work with dynamically generated elements. Not a trivial fix, but enough people requested it that it was important # shinyjs 0.1.2 2015-09-04 **Lots of big changes** - added `delay` function, which allows you to run code after a specified amount of time has elapsed - **BREAKING CHANGE** - removed `delay` parameter from `hide`/`show`/`toggle` because the same behaviour can now be achieved using the `delay` function (if you previously used `show(id = "text", delay = 2)`, you can now use `delay(2000, show("text"))`) - added `onevent` function, which is similar to `onclick` but can be used for many other different events - `reset` now works with dynamically generated elements (inputs that are created with `renderUI`) - make `disabled` work for dynamically generated elements - removed defunc `resettable` function # shinyjs 0.1.1 2015-08-19 - better debugging: when a shinyjs JavaScript function is called with a mix of both named and unnamed arguments (which is not allowed), tell the user what function exactly was called. This is done because sometimes a different package doesn't properly namespace its function calls and end up accidentally calling shinyjs functions, which results in weird bugs. - add comments to the `onclick` documentation, to make it clear that it can't work with dynamic UIs - improved documentation # shinyjs 0.1.0 2015-08-12 - add support for `shinyjs.init` function when using `extendShinyjs` that runs when the page loads. This provides the user a way to register event handlers or do some initializations that automatically run on page load rather than calling it manually in the server - add `disabled` function that initializes a Shiny input in a disabled state - add a `rmd` parameter to `useShinyjs` that lets you use shinyjs inside interactive R markdown documents (default is FALSE to favour regular Shiny apps) - the bulk of the shinyjs JavaScript code is no longer embeded in the HTML as text and is instead linked to as a file. This makes the Shiny app's HTML much cleaner and smaller - use htmltools dependency system for handling javascript/css dependencies # shinyjs 0.0.8.3 2015-07-30 - `disable`/`enable` now work for `downloadButton` elements # shinyjs 0.0.8.2 2015-07-23 - You no longer need to define the server function with the `session` parameter! A shiny server function defined as `server = function(input, output) {...}` can work with `shinyjs` # shinyjs 0.0.8.1 2015-07-17 - Fix bug where periods in element names weren't working for some shinyjs functions # shinyjs 0.0.8.0 2015-06-30 - added an option to allow only a predefined list of colours to select from in `colourInput` (feature request from Hadley and other Twitter users) # shinyjs 0.0.7.0 2015-06-23 - add `selector` param to the `disable`/`enable`/`toggleState` functions and the `addClass`/`removeClass`/`toggleClass` functions so that multiple elements can be targeted in batch - added `transparentText` param to `colourInput` # shinyjs 0.0.6.6 2015-06-22 - added a demo app using `colourInput` that's available via `runExample` and [on my shiny server](http://daattali.com/shiny/colourInput/) - add a transparency option to `colourInput` - complete refactor of `colourInput` using a better library that I modified to work well with shiny inputs - including multiple `useShinyjs()` or `extendShinyjs()` will not result in duplicated HTML anymore. This can be useful if the UI is including a few external UI pieces and they independently make a call to `useShinyjs()`. # shinyjs 0.0.6.5 2015-06-17 - added `colourInput` that can be used as an input element to select colours, and its corresponding `updateColourInput`. This doesn't really fit the `shinyjs` model of running JS functions, this feels like something very different from the rest of the functions in this package, it might move somewhere else in the future. # shinyjs 0.0.6.4 2015-05-30 - `hidden` can now accept multiple tags or a tagList or a list of tags (previously only a single tags was allowed) - allow `hide`/`show`/`toggle` to be run on any JQuery selector, not only on a single ID # shinyjs 0.0.6.3 2015-05-28 - added `delay` argument to `hide`/`show`/`toggle` so that you can now hide or show an element after a short delay instead of immediately. Useful for showing a message for a few seconds and then fading it away. # shinyjs 0.0.6.2 2015-05-27 - added `text` argument to `extendShinyjs` so that JavaScript code can be provided as a string instead of in a separate file. Useful if your JS code is very short and simple and you don't want to create a new file # shinyjs 0.0.6.0 2015-05-25 - add `extendShinyjs` function - allow users to add their own JavaScript functions that can be called as if they are regular R code - `disable` and `enable` now work for ALL shiny input types - `show` and `hide` now work for any HTML tag including all shiny input types - better `onclick` behaviour - when set on a shiny input, trigger the event when any part of the input is clicked - improve implementation of `reset` and simplify function call to it # shinyjs 0.0.5.0 2015-05-23 - add `reset` function that allows input elements to be reset to their original values - add function `runjs` to run arbitrary javascript code (not recommended to use in published shiny apps) - relax R version requirement to 3.1.0 - look for session object in all parent frames, so that shinyjs functions can work from helper functions and not only from within the main server function - refacor internal code - update example apps and vignette to include `reset` function and `condition` param in `toggle` functions # shinyjs 0.0.4.0 2015-04-24 - add a `condition` argument to `toggle`/`toggleState`/`toggleClass` that allows you to pass a boolean condition to determine if to show/hide (enable/disable, etc) based on that condition. Useful to do things like `toggleState(id = "submitBtn", condition = nchar(input$text) >= 3)` - fix `hidden` so that if there are elements created dynamically using `renderUI`, shiny will render them when they are made visible - better implementation of `toggle` - using `enable`/`disable`/`toggleState` on a selectize input works - better implementation of `toggleState` # shinyjs 0.0.3.3 2015-04-21 CRAN resubmission # shinyjs 0.0.3.0 2015-04-18 - bugfixes to `onclick()` (evaluate expressions in the correct environment) - rename `alert()` to `info()` because when the app was deployed in a Shiny Server (shinyapps.io or my own shiny server), it was printing the alret twice - probably because shiny server somehow intercepts the `alert` call too - rename `innerHTML()` to `text()` to make it more understandable for the average user - add `add` param to `onclick()` - add `add` param to `text()` - add `inlineCSS()` function to easily add inline CSS to a Shiny app - add documentation to all functions - add "demo" example app that provides a safe way to experiment with shinyjs by providing a predetermined set of functions to run - add "basic" example app that shows how some `shinyjs` functions can be used together in a real (very simply) Shiny app - add vignette and README, get ready for CRAN submission # shinyjs 0.0.2.1 2015-04-02 New function: **onclick** - allows the user to run an R expression (including *shinyjs* expressions) when a specific element in the Shiny app is clicked. # shinyjs 0.0.2.0 2015-04-02 The user is no longer required to set the shiny session or to pass it into any function calls. Every *shinyjs* function will try to dynamically figure out the correct Shiny session to use. The previous code with explicit sessions is still in the codebase but has been commented out so that it'll be easy to switch back to it in the near future in case the new approach doesn't always work. This has been a pending change for a while but I was hesitant to use it because I still don't *fully* understand the call stack and I'm not 100% sure this will always be correct. But it does make sense to me and it seems to work so I'll give it a go. shinyjs/MD50000644000176200001440000001237213607010303012247 0ustar liggesusers9341c05bbaffccc447e355ef27c260eb *DESCRIPTION 5fbd16a0db762603d807b21feb9887cb *NAMESPACE b749040611c4173d26fc80be84a2ae70 *NEWS.md b2929f21ab990807a87bc22ad2603fd5 *R/defunct-colourInput.R 3e9fe077c70bb4bef1a284e5a5ef9d20 *R/delay.R 8b465d7c780efa296a6503daea30cdc5 *R/disabled.R 3c76c5cea7f7b465369691458e2d33ab *R/extendShinyjs.R 73515e1f82cd19a9dd2b5d560d5bcd4d *R/globals.R c32a2e4051974adb12b8a49c3d7fd00a *R/hidden.R cf0ccd52601ad958a4e51994a60fd2f0 *R/inlineCSS.R 704eec16f0f4c85127580cf742fed058 *R/jsFunc-aaa.R e72e0457ec03683d71c05fe7e31792f2 *R/jsFunc-classFuncs.R 8ae5efb3ec062659f25682a76dab650a *R/jsFunc-click.R 1dbc84be207b621527a7d8aa3342691c *R/jsFunc-html.R 17ae46648464dacea6dd6554deee5d75 *R/jsFunc-messageFuncs.R a2a6402ed643f8b0c076b1e862ba6b00 *R/jsFunc-runjs.R 8c412727584c697e3cef413abfa8ea53 *R/jsFunc-stateFuncs.R 43eb436250243475850d41c2829031ab *R/jsFunc-visibilityFuncs.R 0c7aab3a2daadb8a3c8d00ae5229b327 *R/onevent.R 356c1367b2f60320a62c7dac856adbe4 *R/reset.R c9be246cc1003cbddb0096841eb13a53 *R/runExample.R 030da409935f86664f65f4d2c0025535 *R/runcode.R df3af9b7d849ef9f882d66e370ffa0d9 *R/shinyjs.R a51cb43ce2e2bec17b6ccf90f8c97233 *R/showLog.R d52599811996150b36d40af253bcdc71 *R/useShinyjs.R b65e8f79209ab81122ad829f48e0a770 *R/utils.R 2ea6d45e015889f86b9ef787bba16d8c *R/zzz.R 45ac78345efdd9070e763630094643f8 *README.md fbde896a23659ad8c97bf170ebc57059 *build/vignette.rds 97fa175b4025753afc105a5fe225e803 *inst/doc/shinyjs-example.R 08f88f66d532113df6bbc54d80430b76 *inst/doc/shinyjs-example.Rmd 2c6541ae04b995c36ab5b43e18d423b9 *inst/doc/shinyjs-example.html 97fa175b4025753afc105a5fe225e803 *inst/doc/shinyjs-extend.R 93df09e2291e56aa1ee1816c8beaaa3a *inst/doc/shinyjs-extend.Rmd 8b066de039e0b151ee9c9732d95a9ff3 *inst/doc/shinyjs-extend.html 97fa175b4025753afc105a5fe225e803 *inst/doc/shinyjs-usage.R 143672d4fd544f5191134dac3cf0ea7a *inst/doc/shinyjs-usage.Rmd 8251c5d7869783bc4f3fd3c7f7c4da02 *inst/doc/shinyjs-usage.html 97fa175b4025753afc105a5fe225e803 *inst/doc/shinyjs.R 1395853c413d809304392902d77ff0bd *inst/doc/shinyjs.Rmd 61d2667bf67fec14c3b0ef554d117cfa *inst/doc/shinyjs.html 2840b20c1f7c1cee98e794cca5a96117 *inst/examples/basic/DESCRIPTION ff4ea367b66e57482797f89f97097f60 *inst/examples/basic/app.R 6aba01433b16490cb8842937ab504e6e *inst/examples/basic/helper-text.R 3c18b8235426323dbeb350fe07a0c0c9 *inst/examples/demo/helpers.R 6fe980bba47f26baecec7184ad888407 *inst/examples/demo/server.R e5b5d50fe178b15ca400857ba1ac30dd *inst/examples/demo/ui.R 22d9e69c0ebaff22a24e241a0244532e *inst/examples/demo/www/github-green-right.png 507fa324f50735ea46bb37f49b1d9a87 *inst/examples/demo/www/header.png 3da20a2fd13a853a74d3fee518324842 *inst/examples/demo/www/style.css daf8f84ad8078ec6e293939a4f2a7c95 *inst/examples/sandbox/helpers.R 8e4b5c3cdf52f4b209c83ded6853bbe3 *inst/examples/sandbox/server.R 2d1564fc12231fb72dee0ec7f0610d61 *inst/examples/sandbox/ui.R 22d9e69c0ebaff22a24e241a0244532e *inst/examples/sandbox/www/github-green-right.png 507fa324f50735ea46bb37f49b1d9a87 *inst/examples/sandbox/www/header.png 5ec22f7c72d434a7cee8259fd7436853 *inst/examples/sandbox/www/style.css 4dc73a7d70dc509043c7278330c51254 *inst/img/colourPickerGadget.gif 4f28646b91bc197c9877558927d6a08a *inst/img/colourpickerscrnshot.png b9fe8d5c3f813c3e24292fef51d3210e *inst/img/demo-basic-v1.png b1543466ee93e7fa7767d73280539a91 *inst/img/extendshinyjs-demo.gif 2b3c30bb4f22529fe913f14b5e5f9f76 *inst/img/extendshinyjs-params.gif b460b8f02bf4b319494e55d36c667613 *inst/img/shinyjs-logo-whitebg-small.png 7aeb90e1a4844ea9391ec785114be3b1 *inst/srcjs/inject.js 8acfb476cc565dc7df457e7b032c1c74 *inst/srcjs/shinyjs-default-funcs.js afd297796e30870ac0f48a8f1c356477 *man/classFuncs.Rd 09c608bf2b1284b1efb6e419ef9dbc85 *man/click.Rd 18eb2ee1c5d978790a5ae56c8d946283 *man/delay.Rd f7b9f549ac01c3aaee67e5361cff1e2f *man/disabled.Rd 560339f52e5abe66bb7b6b5762bad1c2 *man/extendShinyjs.Rd c1d107487cf2072acd40108b03f522b5 *man/hidden.Rd fced1e03f87e9cbd1810e265d302c27a *man/html.Rd 183f94c48ad0a1db23c53537d23caa83 *man/inlineCSS.Rd eba19d35857ba7dfc884ac0bad234761 *man/js.Rd 21567757f7d8421b26ef649f4e2e9bd1 *man/messageFuncs.Rd fda3f2733fa4a3a42c28f90ed7c36945 *man/onevent.Rd 6f739adb6fa028bdfbf787b986171678 *man/reset.Rd 6eae5ffcc58ee167bdb7687171ca5bdb *man/runExample.Rd 629618d871dd98610ac7e6dd7e0c4da4 *man/runcode.Rd 7b66c72adea636622ce198b7cfa4217f *man/runjs.Rd cee438a7aa9855d9676eac701f5d6a00 *man/shinyjs-defunct.Rd b005e34736a28053af0e00aa7a3cabaf *man/shinyjs.Rd 183ab467c07d528ca4a098768359b804 *man/showLog.Rd 65fb833a0ab76ccc2cbedee596547c0f *man/stateFuncs.Rd a1a895dff3760d5494ef4dd66099fed3 *man/useShinyjs.Rd 59e9dbc8670dffa39af9b13d885e44c7 *man/visibilityFuncs.Rd 0e75192f4cf5f9f80ff721f7c1809d09 *tests/test-empty.js e78d07d8af6adc0735779f37518004fd *tests/test-error.js ddfaec4159ecaf64f404f30b95d3b0a1 *tests/test-nofunc.js 8b3a79cf6204eb0e561d0d0e297d7081 *tests/test-success.js 96c858d7d7fbfb4f62d3bfb74a36251a *tests/testthat.R 7b41b375c2f68d00a8194657e17c165c *tests/testthat/test-extendShinyjs.R a61938c993a90c12340c84978f93a526 *tests/testthat/test-hidden.R 08f88f66d532113df6bbc54d80430b76 *vignettes/shinyjs-example.Rmd 93df09e2291e56aa1ee1816c8beaaa3a *vignettes/shinyjs-extend.Rmd 143672d4fd544f5191134dac3cf0ea7a *vignettes/shinyjs-usage.Rmd 1395853c413d809304392902d77ff0bd *vignettes/shinyjs.Rmd shinyjs/inst/0000755000176200001440000000000013606742006012722 5ustar liggesusersshinyjs/inst/examples/0000755000176200001440000000000013542227616014544 5ustar liggesusersshinyjs/inst/examples/demo/0000755000176200001440000000000013542227616015470 5ustar liggesusersshinyjs/inst/examples/demo/helpers.R0000644000176200001440000000424713542227616017264 0ustar liggesusers# the allowed expressions to let the user run examples <- c( 'toggle("btn")', 'delay(500, toggle("btn"))', 'hide("btn")', 'show("btn")', 'reset("expr")', 'alert(R.Version())', 'onclick("btn", alert(date()))', 'toggle(selector = "a")', 'toggle("btn", TRUE, "slide", 2)', 'toggle(id = "btn", condition = (sample(2, 1) == 1))', 'toggle(id = "btn", anim = TRUE, time = 1, animType = "slide")', 'toggleState("btn")', 'disable("btn")', 'enable("btn")', 'html("btn", "What a nice button")', 'html("btn", paste("The time is", date()))', 'addClass("btn", "green")', 'removeClass("btn", "green")', 'toggleClass("btn", "green")' ) # to make sure the user doesn't try to send his own expression to run, # assign each expression to an integer value so that the integer is what # Shiny will report rather than an actual R expression examplesNamed <- seq_along(examples) names(examplesNamed) <- examples # show some help text explaining each function helpText <- list( "toggle" = "will alternate between showing and hiding the button below", "delay" = "will run the given R expression after the specified number of milliseconds has elapsed", "hide" = "will hide the button below", "show" = "will make the button below visible", "reset" = "will reset an input widget (in this case - the select box) to its original value", "alert" = "will show a message to the user", "onclick" = "will run the given R expression when the button is clicked", "toggleState" = "will alternate between enabling and disabling the button below", "disable" = "will disable the button below from being clicked", "enable" = "will allow the button below to be clicked", "html" = "will change the HTML contents of an element", "addClass" = "will add a CSS class to an element", "removeClass" = "will remove a CSS class from an element", "toggleClass" = "will alternate between adding and removing a class from an element" ) helpTextMap <- match( vapply(examples, function(x) strsplit(x, "\\(")[[1]][1], character(1), USE.NAMES = FALSE), names(helpText) ) shinyjs/inst/examples/demo/server.R0000644000176200001440000000076513542227616017131 0ustar liggesuserslibrary(shiny) library(shinyjs) source("helpers.R") shinyServer(function(input, output) { # show helper text for each selected function output$helpText <- renderUI({ p( strong(names(helpText[helpTextMap[as.numeric(input$expr)]])), as.character(helpText[helpTextMap[as.numeric(input$expr)]]) ) }) # run the selected expression observeEvent(input$submitExpr, { isolate( eval(parse(text = examples[as.numeric(input$expr)])) ) }) }) shinyjs/inst/examples/demo/www/0000755000176200001440000000000013542227616016314 5ustar liggesusersshinyjs/inst/examples/demo/www/github-green-right.png0000644000176200001440000001675413542227616022532 0ustar liggesusersPNG  IHDRQOtEXtSoftwareAdobe ImageReadyqe<IDATx] X>"*بU4MH4m%m ]o O$m{ 7m&1I4hi\QQ`PD\aea<̰0|gyLYʷ~!!UqPM} mFb3&̠D}5~XyݛR%]||V]m,_EAœRgN|GUѥK>F EwFɏk=ItXj `y ܦMurEG22yr-7Zb͝<& I iK,W|CV@: PzF +铚O>$#"(qr"½U.=E5tuK%jw9n뫗|9-// OWoq"nELpzp>M 6/ n$e>qFv\ Gh)4/j( aXuZ a}k~tez{tOj(Cs:Y78z"͟2O쯢w,G X}RPTje=U~rXv&NC}_rJNpt1_jpʻPl7e/|w_rJO)u攙zZc9 `yi孔Kgu k@zxdއF5P--"x#ƪ>^mRt~vM0)X`KTn3VPxAI7lƷ^v'@6TE.ǁDEr6=N))ԫo.^kDG9ashM⚘EerF0XH7 @ )t #۠ۼ3 xú9k_9XUaiE jhm2ScAAݟ-z >lܴw2\$fVf [nбHz~"M3Vش0?z^+S#2dPRde%j( lEXUm[ۄ+Syjў2~x3NL}99 dH3o5]2~6@evT0u6PP1X֔[L ƺzC8j1M#{V6.OT˙d*=QJK3(kUV6M Fw'-jf*O0UWѩSô{'=[wPI*>\L9׃FQy[5hp;PG!Ѵ bm:K+ 6ִiy4;q;8zTvy-.o}dqyltSCjW_{㚨+p<c' JdB"Rft8IC_jJKVFxhz;{9{5fm2XAAA\,UL m@Nӥ|b *FO+njAy*Sz^zSi:m!x-Z4O+?uP q3 H5 _ơ7v*|UѳE239`UALc]e9ŐXɃAX~}G +V/fnasݓgm.%b`) _ r[ ͫTYWI8v~A Sy&DN`ƪob5ITfWs(b+눩MIz**l{O/wШ *,R焵d0fdQA T֧NO=f4wP%[boYt2}E<,RU".@o|=eY1h7 xky|asàr}*w ~$<`lu{KF - TS-gmJB 瓢NjNMci^<>TJc֜9<%ƒjc+"@X1+iP-z%u^Qlq"f5h}5Lcq'x/+/3}Ǚn(I.H*XT&tY]S0JL4s>T`μ_nDA.4_pj@5>v"XlJR3=1H;r+ ӠrXMg0 OqpYMEUYID9r,!>1,]3z՚rX+¯ltc:v,.w9<[$eťHNk”71XH >Sy2 ! RݐXAfoKws97Lڰs}KVVwD1DASyG{ktARy99(Vgq_;g, Q~T`ᓆ;#KT]"u7l҇$}Ț EL{F6cur*Ӊ} T+!>n:Xr}Y+8w;UYkNT`{PuX0EZ8yߊ+)WX~ܘ' Т@v23([_*L*Uh-\'A3ufF?A{r>Y[~ *wU[UkCK~N,e'Q7 r%}>ŭ5v尐nk_Qcciuph􋏏Z!;< ڔsRSܘ19 'Kjwex=j88_*wc, ! E?Wn\q^-?*exX2 V@0' ް1aVQ}5Mޯݟ\!`$>s}|x3<:7e]bBc(Ȁa*O0VhDa IdiA UNvnA҂`ϓ-]lQDA1tiyl3րa*O0V]mqt״h4~x\-S2E[Tgrו"w~U.^ TƸ|+ Z] *$=r\OS&K{3Z (kvlZ>sO 8)W8.|b#hv'4)8!L9CdWkOBuA˗kT ɉn8Pp@n^* HHκXa}LyBG-5`A*~s~y҃v`ymuzЎEe P'K=y.͗LΜrg)&,<܍AZva\$ qz@a8e$NZF3Ryݵw@|ip4.ħTR Yt`ٜ E! RNB"EVڼ5j㗎sr*QA*we:n2b0~R<}9R,0/xٔ&2Kqz^h8HV9K )|]bWM}(픎y䱴bٯesU #iq0-dj0؝EErی/ JPnX, R F1ERm@CϧRb h-@i܇(ӗ -" RPK A[4X}J8y}U ^TQe>T1'c,_m7YE琎H&v+  j9s6{lz q|s#IaP3'+2&#+;^d3iNC+IQ hJk-1ؾBך) Wxԡo\(2qqquﮅm9PYQ)i[NT- "@!EFG`JN)q{ȽyCbQU4sL^ p@ z X*h>~:!:2P2`Ƀ0O(lX -Rk6,Z!TpP+5uVtoB^DA0 9X{`-徟P,fB醳2ë{?AEqf3v]F0 v1b,eAʢ $1j͹?;6pWZrN*1pwɹ..R%l`Q״cT^`sEGcofS7%l4TirȩeQ:#'IH*夣uKhu q+bc Py X_ I`*Ș}qWtDiwu]QIG!OPP@PB!ȅ# Q=nˮ0\Ί~A ]h# \ Λُ7R|xRGMNjoqPBj1̢ hg%_Vro6/3VfX :!0hVB(D<ĶWlqK {臹Bךd&+{9,A@qPuw1qzL}1X:gSQS:ghaBz`hkcqg))C=P I5DGbU#zc 2``LnٱWFOf .$*E`l; էPA<]Q*VhnC,֎ս=КJjMVrVEBBG"_!SFC9i+ [t)x\!DA~ߐ}D.fAZ|[9(=J0f 1 wȁC!Y(rQEASc]9{%t w`O kyP|s;N_XDNB;VsgY iӲLL|wL xǾg\aAwj}*V_*6X6dS yHI] G6a8& T`X?=)Eee`$j1" Z!-L5@ ս^ 6cM6ـ5X6qT<S, rQ?a'+1c@0012*ۿ0z%Jۙw(Ư6TN!#B;S cA9YkX&J Y000VhDaՌUtt*aK?]S:ȸ['Wxdۇ&!,r&Jk씱B;V߹}gQBX[ͫOS s zfĤOk}"xo3 cm[Ϸn"*بU4MH4m%m ]o O$m{ 7m&1I4hi\QQ`PD\aea<̰0|gyLYʷ~!!UqPM} mFb3&̠D}5~XyݛR%]||V]m,_EAœRgN|GUѥK>F EwFɏk=ItXj `y ܦMurEG22yr-7Zb͝<& I iK,W|CV@: PzF +铚O>$#"(qr"½U.=E5tuK%jw9n뫗|9-// OWoq"nELpzp>M 6/ n$e>qFv\ Gh)4/j( aXuZ a}k~tez{tOj(Cs:Y78z"͟2O쯢w,G X}RPTje=U~rXv&NC}_rJNpt1_jpʻPl7e/|w_rJO)u攙zZc9 `yi孔Kgu k@zxdއF5P--"x#ƪ>^mRt~vM0)X`KTn3VPxAI7lƷ^v'@6TE.ǁDEr6=N))ԫo.^kDG9ashM⚘EerF0XH7 @ )t #۠ۼ3 xú9k_9XUaiE jhm2ScAAݟ-z >lܴw2\$fVf [nбHz~"M3Vش0?z^+S#2dPRde%j( lEXUm[ۄ+Syjў2~x3NL}99 dH3o5]2~6@evT0u6PP1X֔[L ƺzC8j1M#{V6.OT˙d*=QJK3(kUV6M Fw'-jf*O0UWѩSô{'=[wPI*>\L9׃FQy[5hp;PG!Ѵ bm:K+ 6ִiy4;q;8zTvy-.o}dqyltSCjW_{㚨+p<c' JdB"Rft8IC_jJKVFxhz;{9{5fm2XAAA\,UL m@Nӥ|b *FO+njAy*Sz^zSi:m!x-Z4O+?uP q3 H5 _ơ7v*|UѳE239`UALc]e9ŐXɃAX~}G +V/fnasݓgm.%b`) _ r[ ͫTYWI8v~A Sy&DN`ƪob5ITfWs(b+눩MIz**l{O/wШ *,R焵d0fdQA T֧NO=f4wP%[boYt2}E<,RU".@o|=eY1h7 xky|asàr}*w ~$<`lu{KF - TS-gmJB 瓢NjNMci^<>TJc֜9<%ƒjc+"@X1+iP-z%u^Qlq"f5h}5Lcq'x/+/3}Ǚn(I.H*XT&tY]S0JL4s>T`μ_nDA.4_pj@5>v"XlJR3=1H;r+ ӠrXMg0 OqpYMEUYID9r,!>1,]3z՚rX+¯ltc:v,.w9<[$eťHNk”71XH >Sy2 ! RݐXAfoKws97Lڰs}KVVwD1DASyG{ktARy99(Vgq_;g, Q~T`ᓆ;#KT]"u7l҇$}Ț EL{F6cur*Ӊ} T+!>n:Xr}Y+8w;UYkNT`{PuX0EZ8yߊ+)WX~ܘ' Т@v23([_*L*Uh-\'A3ufF?A{r>Y[~ *wU[UkCK~N,e'Q7 r%}>ŭ5v尐nk_Qcciuph􋏏Z!;< ڔsRSܘ19 'Kjwex=j88_*wc, ! E?Wn\q^-?*exX2 V@0' ް1aVQ}5Mޯݟ\!`$>s}|x3<:7e]bBc(Ȁa*O0VhDa IdiA UNvnA҂`ϓ-]lQDA1tiyl3րa*O0V]mqt״h4~x\-S2E[Tgrו"w~U.^ TƸ|+ Z] *$=r\OS&K{3Z (kvlZ>sO 8)W8.|b#hv'4)8!L9CdWkOBuA˗kT ɉn8Pp@n^* HHκXa}LyBG-5`A*~s~y҃v`ymuzЎEe P'K=y.͗LΜrg)&,<܍AZva\$ qz@a8e$NZF3Ryݵw@|ip4.ħTR Yt`ٜ E! RNB"EVڼ5j㗎sr*QA*we:n2b0~R<}9R,0/xٔ&2Kqz^h8HV9K )|]bWM}(픎y䱴bٯesU #iq0-dj0؝EErی/ JPnX, R F1ERm@CϧRb h-@i܇(ӗ -" RPK A[4X}J8y}U ^TQe>T1'c,_m7YE琎H&v+  j9s6{lz q|s#IaP3'+2&#+;^d3iNC+IQ hJk-1ؾBך) Wxԡo\(2qqquﮅm9PYQ)i[NT- "@!EFG`JN)q{ȽyCbQU4sL^ p@ z X*h>~:!:2P2`Ƀ0O(lX -Rk6,Z!TpP+5uVtoB^DA0 9X{`-徟P,fB醳2ë{?AEqf3v]F0 v1b,eAʢ $1j͹?;6pWZrN*1pwɹ..R%l`Q״cT^`sEGcofS7%l4TirȩeQ:#'IH*夣uKhu q+bc Py X_ I`*Ș}qWtDiwu]QIG!OPP@PB!ȅ# Q=nˮ0\Ί~A ]h# \ Λُ7R|xRGMNjoqPBj1̢ hg%_Vro6/3VfX :!0hVB(D<ĶWlqK {臹Bךd&+{9,A@qPuw1qzL}1X:gSQS:ghaBz`hkcqg))C=P I5DGbU#zc 2``LnٱWFOf .$*E`l; էPA<]Q*VhnC,֎ս=КJjMVrVEBBG"_!SFC9i+ [t)x\!DA~ߐ}D.fAZ|[9(=J0f 1 wȁC!Y(rQEASc]9{%t w`O kyP|s;N_XDNB;VsgY iӲLL|wL xǾg\aAwj}*V_*6X6dS yHI] G6a8& T`X?=)Eee`$j1" Z!-L5@ ս^ 6cM6ـ5X6qT<S, rQ?a'+1c@0012*ۿ0z%Jۙw(Ư6TN!#B;S cA9YkX&J Y000VhDaՌUtt*aK?]S:ȸ['Wxdۇ&!,r&Jk씱B;V߹}gQBX[ͫOS s zfĤOk}"xo3 cm[ϷnQt *IN:Y,@(+DSL ,Sʇ$pF쒕n9{4,Q%Kf6YTK\޴fA~K'Bbnm9: Ҝdj"b'Mu:?^WQ 8="Eib`;o[0V%HEZ։ h@=EjCf%v;Of(!("Zم%Hl ރ4E Y $/ PކUiFR$Hxߑ @k%`B5Yxȃ}v 1m)32U HJX̶*Ȍ F8" ,JL[xl b;"";&5\%K$f"_|e!O|a({yYhdc%Af$ Q3i|K+ÙU^Fg0[,sD Ӗ 1-uBjTC&8i+J[҈|O1j\jV iiXg; -ks?k}gd?jimbhT- ۮDX"ڸ5H ssѦVa. wr)mz$wX#E=ˊށjiCD y϶)y䅫t\oNߜY}wD~آD…ߡ^#)G?cnul&W#.H~a=^wػ6v^chm^XOӅXo{>{ ƸS 溕}A}G>y#SnlDuga7%?tQ>k' AgĴwe{4ىN1yV2 |72'8#MHeJUGqa%RGd3HbgFf6EO5rz6D'G7|a(LSkĀ {ZGEvD&Z֗&xZ Y[D mgU_6q'|@hMGǂ !\3|GOV̴J@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙٝ9Yy&!!e,;NPW[ I /   * 279 831/)!!#"##"##"##"####################(#%+#$M)}8=ALP ?+95A1212121212121222222221B:GC?Ʌ?xK؊R֕Wܣ\aixĀʉ̖ͷûĻĽɕt{oF*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲˑ_ʜI͛8sɳϟ@ *ЙQg՞=;4RFBٲmMNU+TP%k֧_{l5eܪUt2߿ LÈ+^)O[dy^2g3Cܵ3ͥINzkQ l۴oskܾg~wố|9禡&.wrѳO7*Pgо/;"W|{JݏG^wᧇ?>^3ćs10sR'hS΅fv ($L/z=Wߌ8G^.Hc+|CD $F&K:)eTBEZ9Ube}^^ek fp(&o]w^xz>g~zZ&3hyN*z*SǦv1<^ 3ē?*무j뭸k>K)0 g*:);BJ)j[-f kv{Zn뮼/oL0.pI`2h2K0aLTbbiɑ.r 'L}sM4aL)1u?ZG+J>K:SXcݍ6)ދ&υ1MDm l ݗ|7*W-f6bA,h<HFo,F9qtcH>1xc G;#Ȅ/JLC@d&1f`&5] UB%ALe&SɌHT&Ր C #X,WKXd,!#D4]2YqMҕLe1pnzuD-KW6sA_#<5 d%/e^2d%ȲJsӗ h?)R3/шbݨGCO"MiIIЕԥ*mL'ҙZ4iNaSj;iFjRԨ?i%f!GZJD&ID.T>P2U3)JH@_v M\ %Y{iV2̹j$`2@~T3g1(;`㱐}_ܓ!t(0F?v;[6! $ւxm&LX26 &Xӯ=k*wx?ps{Uͮvz xKMz7Ȅ|3IC/UrkTB/H)muo*@¨D`te& w 諆w XꕯMa5\׉f2F":8Caٯ#0E Mkp[ղ6kM5eV9U&w|x^f-P|th^qe͜L'6M{ā բLBѐv%JGѓƴ)}iFsӚAPzԦNuWjV/հ~MD:Ӟ5!Ox,*ah,C>2ߢb=݌d#[6 5(jm+ ªLu_&f;:7o2 m݁8F:fL]ne8k8F)@@gB5jOەB(ym{^ 4h՚Wycd@&*>203W_A "RDP |g]X7ԑ$|vuwՎw}^{ x+|'|1xC5͛}zѻ?}칭kjCHB0_aW2!ZjmG~nl~4H5 o}ON=LUT&կ|#4? `V33w}P5 v@p ]3e5u[P d!X#XEsO[$Z0[U*V:XڥPTa WJ\jL:jZkzmln*p:vZx:twZ{H` H_\)Ш aSS0   spIs0j ڨꨣ:zz` *zLp@ ꡶ꨁ J J )l` :X3 ` ΰ  X"Hi[=(iv`sep 6[ ɑY* | < аJѵ  "" Kg(x87 7g6gx,B۬۲EHCFOD˴S۴GkPX+NU]Ka>+W g;hf˶de^t H{TU G˳ p p ` )VతOEʹk KT06[JK e@ ` 0Zez 5 [r][:ȼ󪑽UZ I 5s̫'_KP _ @ %z+˹ppI T hY:;4 | "<$\&|(*| 0_U 0\,-ܧ =3wv^] 0 Dӭ K: ` (dћ j^ 4Y5ѽĵ |p=s?}ץl ">$^&~(*j, p |H0I ? P '. ⹜㥼 K "K L @ LNPR>T^V~XZ -L xbWH> P gv~xz|~0l0 A ^䌎ˊ鏾n 鏾鈞.~Nn^^䪾뱞n벎~n~ʞ̎^Nӎ׾>n.Nn^N ?_ ?_/~7"?}S&#$o'!/403o<=?AC>@BDFPQSRTV\^_NU/ZO]o_cegiah_try{}:EoO?:/?_?_?_/?_ȟʿ?_؟ڿ?_/ Oo_K/ |ӟ?}/@o@ D?wUZ{1Zk%WZiWPNyeUf]n9feyfwֹ9蛇h}褑>h^izj:jꬻzk6Fm^;nNhW^Zp1xVm

x_x狇>y^ꛏ{볧>|>}G)SVq%XleVw/ )g>!BuTg!+0yB4+[%GCh|C$4Kx0@! _CІ5! [C#biO8D"шGDbOE>!VQ+f["(0Ћ]+B1`6lXF8汎w#G51 8HF.ґT$q+[0F;Md(AO(MJOD*eKZr0uK^җf0s Wb$?>Iy#\&' gJ󙛬f3MmR7Mprh>Nkz\9)Nw|<OrӞ'=YVT9 }*4 EhC*[Vz{E5wPG!UHKғt*E)L]Ӗ5MizSxl0:TըGEjx@qWࢢ+ѐj;RtXWZի^=+Yjֵ#+[ֶuvVUأzk\zWݫ`ڎT,vyUla!X"ֲlfՁA[tdP}E*r m:N;ժ6}k[Zʶlc[miGۍ]$ոEnr\"R"l^ yE8X{]fw.i[Zny]񞷽)A^5/|◻z_W/hp.f1|bPo,\anlO&Jq gX۰q7N\b;qc!8?62lOr63,f5nF3,gg89x^l y6fB'Ћ4MiJ:ҎmJ+b^U&?Xb?FmB?AG<Y ]׹5kav}nφv=mA׶}m,b5,V!B'frMuf5x8nͭy[Ml x +)'5nq<+Rf8pFK R:ֲ6E) d)wqs;υFo NPOzԥ}mlS=q 1 P|pF7 @ړ`r}e&]b{v=m;ܯ#]aoxNk&p3y<>k,xcBc< /o@|n u/{| G쉱7쩾9)%Tb) @e?͕~?W~ІA @a::mӶIW8Okþ; Ĺ @þ <@ A@ AvdCCAC,97,DAl:C>C6JALtĕcCfPQ<=SDT<Ŭ3@O2t@,g;gxj@[s;lF#ԛCFEE{{F'@C _Fa=i\>tRpoEq|Bn$n\FK˄absEg<~űA&̄!|vT!kB ~!dBsHSEpD[tHȀȏ,IH ɓ$ɔlɕtɎ$2|>4fXC 49f%JI{'?pg`ETDmX9HTDɧT5?LJ86MJg,ˤNlO$Ŷt˷VXt[$:7<ѳ+֓lcfHk=O#;AmCP?8DPTSʰUCXX%k? ?8Ube5p gh-*#=lEm1Nm+r44#0i@LK(#ƫQ<¤;-#5m@Wm -;׀-Dѓ#x!<5X%;;Xr]W|}AeS7ErXB-<-ؐ5}م]YY YYٜUY Z-ZY5mpXp%prI:,JPU+^n(? ZXMձ%%[[կ[r[c[p1rpVi%5\#Vl:k-aVhVJ Wyp1m܈mUS;WK$SLxA]L USԥmVU[mS]pM!,CAhBhvh?Z'-uphpWUk.ao0Upk|-OO@p&6??jV}fv>b">oeJNlvlltl^m>vm.mz+Ԟm~m܎V#mVfmmF.nmVNfoўEhv@v胯.{UJ)ofoopFoZlfmVƵ"V\!V|+p(&qFqqgqqgqUqq'#q%r#!r%+r,8pMpJv20r04gv@s7_s8_78s9_p=Q ?g RCNЇ9s5_t9_;osFFwt;_tUHtEotMtJNOFI/uT+UVtITuUZI/JJ+>u>x'a(`u^GdWegEs>h;(ll_tnso_sp7qmP'nt?o?pWwt_poqz_wzw|v{ww\pHOeUPgxUM[ouuvioljSDo'$7gvWgt8'xG)*y7zz^}*^z_s+{zz'?+'ێ{{{ow{'|/7G|Ŀy`h?Vȗ|_˷|Oc|'}a挏w}T뺮pW-ݧ'}O_~?~}~G7'~~~~'/7WLJhG?}uҥ N A n A&Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2K NWJ'РB-j(ҤJ2m)ԨRF'VXLqHBa6$p,óeӊ]۸jB,c.޼z/.l0Ċ3n1Ȓ'SMZ3ТG.m4ԪWn5زgӖmg,[97‡/n8ʗ3o9ҧSn:ڷs;sA6qrŊ׳o=ӯo>mYixUCw )`uB8!B(avZaUy8"%x")"-"18#5x#6NgA@FW:H6D&0R>N^^eZi`)&8doUl&s!ei'rYgJ础*Z(. g)雑Z:io:(LR秄(y2襕&^fM&Dn{n<[ o믾,ҫp GCS,k1Wܰ#w'8m[ 32ςn&G?JP$5B "]a =K!Jϔz#8N$4a .=*>̝fN}SY UoZWհn`+ZŪVjeVpɛ]4/јyiH؆3xW+ Xim6mzg>y9w3l qFt 0QWuul_dZԪ}=z>T"3+K5Enkܽ6o8zO,V8rq\rݮwaՆW.yӛ -6p X-6/#?pWMzRpXb}mj{_R/_*W <`*N1"D$щM%~1]cX51qlϸ71, yF1|d%'yKvGأ\ABD9j J4]Nƕ _pF`epvDa @hvDo\Jmc2246c11R(^&`B&t7 v]99@4L#.?P{Mc2"-$j"A:Zbŗr`'@"V# -Vb^c/"Se#)qBH$I$J'T;е:M;MMNONOŤ;C0$Sn9T~9 1l U`/C eBXN9$ZR :!d= eUD2%X n@*_%\%: B*- 1l)(``|&d%b֝%Lff&&fصiA)@gj%\aV>eB4QfU'XdjN&.f[p*DtUuM_fm*guesuZgpb'w~w%xny'X^Ꝟ8u~&;^&gbivy'n'M4Xd?x^Sm`ZqVf'ef'ehf'u%.֦[V(pEw%4*dSK((qB9C9C9Č((h.Vt:A8::C V^)neHRBYBNi>)P@aiiBJkR+ZkbN+>ꪞ⛀5i jbBvfi+j&(A#5v5%Hq+:Hjk6ƫi붪*8JF:յ2g ȎHr%8Y˺,Zl,Ͷ,VuMVf)Ѯ/Co pmm;6D!9<5\v`^V<؃=þ5Ԯ:5B6C9.(:a;BöC%A7ne-j׵zMnj *َmemܮ)NMZmn疁䮜*Qb on&/./2,%t{:Y^jy7Jv_PM6^o*6ή-_|VG) pϞʺl586T>pCRpZpbg0v(pR'Z9 ;-2LD1S U=+0 mp)04&.C90<\ 1m=j1:EB13W0i<@|i}ٵ411&Cr <|q!nq r[2 & "[:( ^7*ʑr'k"B* )p,r _r03,r' s1c33+32[21C  <\A4wС4@3grl25[.d0; p:57-"q#C18:r#Sr G/;s4kqAB;3B*B3%ʎlE00'49340GHwH3G4II4`Y3F)p.=K =X}O}C=H=C,=?P֛׷տ=ׇ C?=3&$}?}+>#>3~;}SK0?=<0§'B! "0^;XC7Z Ծ> %8`o~7C~}//3??'?K+g=Sc?گn/CX&T+8@L Ƅ 2dXC 9m{N#Hak:(҈4(pȃd8D5pA"-et0N͘5S)3:ـ 3*F] 3mJ6Tm[o­Xua:I__ڵq_[$Nuc2hŕI&XTldӒrΧ;ot7$B#smr'P@3RQNL&@ ,Rn $# 9"c&0ίa=1qz!{a12ZZ!!py ""'r Q#+#/$3R"9r#1$?$Or%E%CR%[%aR"`e0ur'ynhKQ Xm r%j!ȡp+r,R----.r.-R.r/ =q2'{r0 0Fg1]!aڡ0i\ƒ1G =3P*P:4H6s4-ag,j34_38cs47i34889s8:s9:s:8;;:s<9<=z 3>s>gO3Ӂ3e(^!!a??9 K?!BQPB`A 5?4!D!ہ<4AeATASCF3EcFgtE_F[GkGoTEETHetGHTG4G}IHGk=>4K{\maa:a !Lp 4NOYNL Ph!)JPha7ORO)URRUS-O7S;5R?UTCR'TOTST3U[UU_U SguTeSWVq5V%uJJgKuX՞Ρ$0A yBZ !RJ!UZ|+xk\j^^U^^___`%^ v_6aۡ&I/`XKX%vbuҟDh蘐)p)adA66ch`eAc*TU6g5\cw֘hJAcATgQc}vjagjfkYkcVk6gǖjlllvkvm߶m6kVlӖnW bboJd6ZˁrNVraʁp pppӁ*QpKsOWs/px!J]qV87ZYw1tWtw7xMvxuwxWyyyyy7{7z{{W{xopٷ}!'Cw~7~!i]W~qraB)TlV r7AXlRAvKB^HրWW[W痆Yxm8[؅qxsc؇{Kz\AAzfdHh!nAA*ԌAa8ژYِ ي!ؑ#-1Y;?Y3yEyAyMU9YIٓaySyCY_J7yYr/v5999qoחyG̼e/$EH99YIaw9,#\9y鹞y홡y&z 9a֟>(-1:5z9,I<:UzY] T!֤me azy}:=iXqz$Zs:X8:H:Y:駝_0:: =Z:هS&ӬZ;~:!ۜ1zD"=)z#:MU{YΌ!KGi;SZ;u_[k;zw{J;_/e۲;K{}:G۰S@S{Uc{廟7HaϬy' M٪^]Wf=~w,.\8;ʁ1/ޞzm>[-^х> !pp>"Ո^}o Mߌ}>8 }O?K^ǽa_yD>m?qs{'Ys?:}KaӋ^_}p/}ƾ?㵟 ׿j ~% <0… :|1ĉ+Z1ƍ#Nxㄎ$Kۣtnoۿ״Nq*`k H`f`Yw|=aTiXnȡlv"D6a&H_aa.XH@#G:chMr,SǢr5d)n@w&=NIeJ(UjE&d^29'vVf9v,CnɥratY|2gUVpvggS~> i V&&h6nQ i7u]jY>j\yj"լ{H!DtkZl^:l+Rk^枋.:meZ-ҎK.Vދo(/ O*;m^p ö'$ q5{/q<q&LR.2L>rV(0_UsBF2t&}tԐ? tZ ^IbR[v ='_ Siߍ7-~Oy y w:sR+/xw:=wWcyꪇ(H$m9ώ(AW٫{]<};̽zϼvA9Z1'}͵}7p^ڟkˇh!S_tX~Oa,Y%.)P4Wzp'jp/{w pi /$]GP%\Vü O~ D/DF9Ӆ0Ld"&"J(G ,pm9% 8'R._lcOF'FQwh8?q:TlH?q[țTmd!!y't#XBrXID0~J4#'O;ɏ 9ܜ Vыe#X`"N%)K`t2XPӃ 'C/0v3E+zMT_%#G8M3#m)JJГn}'\t2T:GtׂiOqTDmzT&AդS*FU2 Ciu 2ִidYATU[j[֥Zu|e[z}-, 5c_5*9Yum_'9fv,4;Vm"yumeڍƖy -Ko \v-c:ǡ0)qg\Uep mݯ ^ـ7R/m Ff=M\S }3*U7_ḻ:W+ %Y[[ 8%pZx)pLM*·qe[|ZpCu |b!+9"%6,%K!Mvr )ky!-c98[.sn\e05f6s,0dns;a8 r3-|^; &no7Ѓ+>ע϶Eh3u3!_Am٢:uK]MnՇF5Ġ\gX+/<`6Ƨ$WzÞr9k[{ҕ[-.:B=cVa͜iXԸLsY4n ˺{:"owAs[-,AٮcxS1=˺tƻuĎ!kpY|fuߖ V=g@`9.pL=òvҗ,QB{\X?nߢm\z'o,6N\!c{m>Ja~q##iv'/AHg;OΧ?}|꫟>RLYjׇTsmEOJ=ǭnmF?wsg[UNɯϢhOׯ\A~?x}׆%v|b;~їs]vgrvsz~|W:uWzXt]ySphW"(~v ؂t$x2!4 0H9#/=X|@W*X FX% |hƄÇR! w |ah % ^;  rwPnx"|kx@v~Oq| 0XrV*,2Is=X"Uu x|g"ce}X艪h"Њ؈(MՉh>׋h|bxMXqVx˸PȋшS7hҌǍM( tOXx|؎1 BڨHT؅(vvtQNH)( xQ̨`s8XxʸÁY8$ Y9x/VimX (n<)WȈI HOJ MhHTPViX&)_ %(IaP""ՖLq\9.YvYW0ؕH9ɗ^ɖ閎Z)闔PwYi}iٙ)Oɚhə)Yy gy!YNQi:Rǜʙ Uչɒ2I- I♍I9Rw ْ)Div&ɟLjp F٠sJjv ɡ D'%Oȹ|Q{( ZY}&9SZĠ|'9W Lz@y! QY QZGJz=A`J9"JeAJOvlMGJrِ0J(x꟣lȧwQHt/J*CJIM JB0 wq 5 ?00`_@T  zZA٥V E!ʨ:NJZZ0):D2*ފGIĠh:骮@᭴ʕj{ZJ:Zàڬ; *԰]9+ʤڐZ+C ʱ;c${> !+)g*J8[^:?+BxI=ѢL<0 (J<NڳKĠ Х7O;J;g騶o *Vv> y|Bڵe[K@J 9k){:n8 x[6hD z[L 3‹K;ใ[3\ʻ"k?ڹ뻌+h*f˽٣Xʻ) kzBڥ K+۽Km˾eK LܿKk"4s[{ »|{€ ¡z$Xcb?;Z%\I蓭 \ZɿKU4#  8FKSg=ię ] A#/ӴHy:{\1eÂ,7<NJTȋ̵a|;ZC2oK|9ʋʐʐʔ|Ȧ|x\ʾ<˽1(L c̥k¬\3͜:,C͊[,3̷c| '#okެǥ\4_uLl̾[(sQ лl1M %8\0 !Z<mŌұK$-/]ݼIL&k2;6]ͩ ԁ,LԊ]I/= M f 0l=W}/RM~H.]j8A]ڜo;m/`}*dM_;\={.v-ޠJPNNn~N #.%'N(n)+*-/.5N7>9n:;=<.?>ANGnI^KB*@UnWut BX.bY;BP\>X ;m>o 9Xr{}.Nn臎艮enؠi~ Wj~W oVb*ꩮ꫾oP[t`nݬ~pNI`{®.Nn׎ٮ֞N먮@Ⱦ^|* >>..> 9 @^E x嗀t~ tӠI; PO-/_123o5479?ACD/EGFIKQSoҠ!Pt/B` . q?rOworOq___y_݂j` Intnjp obO7o//Oǯu݀oye_jz/e*@n o40<'o!txW9 Nh0F $ȓ%QT2K0]Ƥ9ӦL5sٓϝA} :hQD]SQ$UDI^JD2!B BLHi!It TqΥ[]y_&\0aQ?.=z KԇH2Ui\AJJsTZ{]UX`5XdUeeYgmvZhZlZnv[o%qR|1@_5USE˕5VYCKr57s_~_MQO>8avXaaj5.a*xbdOVSfecnyfifofsygz蟋h*i5ӹ m @jKc%'&l.{mVmr%V[3v{w;oE(h7|vjqŔD~~P$` x@&P d`@FP $6a O W"QP+da ]BP3a mxCP;a}C QC$bxD$&Q/D" A P"bXh7AIHBc$cxF4QkdcF8QscxGvM3iMmzST;iO}SUC%jQC &FejSTFUSjSRf5v1jWUUc%kYzVUV}V~qusk]zך*5xk_ױ^%,R&VelcXFVle-KQvMlgS"h=M{ZԦVemk]ZV&+Z ",lo}R2`%GK&Wens\FWӥnu)`-o]҅4F;Cz^x׽]/};_h11mW&p |`'X ^0'`GXp-|a gXp=aX#~0nXqo,vP;ܡu8s\c@lv0F0Lb(SQr|e,gY[rLSֻ+&3g%IW#@G9f5k~:tptcO\hD'Zыfth,Gc.szX6 NsӛƨE jRԨ>uWjUАi}k\Z׻u)QҖ&K%YS5lgC{φ6mhW[Ϯƪ!YZ&w}nt{ÑQ\lxk3 {{ַ3};on'­x-~qA׸:3ÎwɏyVh6|a3OBn|;07&`ߜ,׆3(!3dat;}I%B,q]c';7w\{0"Grf( <͘0 l Oz|x7G?ҏ aS–/p%`/{Mz+zgG=n`DPBp{9xUBx6uf3:؈͙1?a709?̧.`04'? aӃ@,d+֡=k@=Pзi5:Le󹚳@;j@ d6 @{Æ86{:K< 8A:;0˿@%\B&lBӃL t@+O6p膾.t K2솮+$ 2LC5p$K?K+ß=98d:#PC#$tBHDI4=)L0$0٬+D@rO n(r؆6,2$ş#Ch: ,79;SrEp ]B-R@= Ҡ1S9uSDSF]TG5S; A JTKTLTMTNTOTP UQUR-US=UTMUU]UVmUW}UXUYUZu? T\ M05FS`U`G]H%\MVe]VUf}ֺq PVkVlVmVnVoVp WqWr-Ws=WtMWu]WvmWw}WxWyWzW{%WgV} WW XX-X=XMX]t}~3=Slp؉XV؋،ٍؐ%ّ֎ُ5ٕEْuٓŔeYYYYYٖٗژǠ%ڡY٤٥YYZ}ZZZڪګڬZmZڱ [=[M[]ۢEZ}Xf@@Gxۋ۾ۿ[[ 5EܻUe\%ŕǥ\õ5]\-]e]m ]=]ٽ]]]]}%u]5^]^U^^nx[UV۽E]Y^^ 5E__]_m_u____ `_}_FN]`V`n >` ` ` ```a.F>a.`N_\^ߌَNZa!a"&Z#N >b!F%Vbmb)fb*'(-b b-b0.13c2Nc3c7^7F8Vc9c;c@?6CcD>YEn0^udJJGv6dMKLdNdOeRfQ6eQNRdUFUdWeV~eeeMeYYe]e`eaae_6`&feFbef^EdBRi%$۽-lnfm_n?(Jkgo&mnu.gxwVgzfvqzgg}}gwg~>hNh6.hg&hhhii3ijv!XZ;Sll.l^nl6lɮlƾlY^VPznp;(.G>!ꦆGy(xfoxEM`M\9j6mfq^nn~nnnԶnnnnNoVo^ono>oo.R^-shGIr s p?`&l0gh;ipj σJp? T0j v7sh@Єdhc0c8tN?vqr wq?" o$Gr&_r"'r%7*+,w/r(r/-s3r43s,O0'5s6Ws7/:6;sLDEX1ō9b(#ɉ O4J-%dL*kjs`!It TF"Mt)ӦNB*u*ժVbͪukNB%T;xܙWVY+6<ͤNLum'/۝Jy-b<2'b e˶,S4o mgӮ]KZjԦW6 kͳmnmZ7kٹ}tpom\9r/]ytӡSώ}ǹ\ǟ/~ӿg}rf{ :+؟WaJ< #< a.(`^DžIR6 ]n%^yfi)flrm&c y⹧zgo Z(މ蚆&袊XRZbQX 3ܑ=CS?jԚOJAbe3 ƣL;˖lJK-N-Zkj~Kf皛n讫z; +n pL/ ibsqaU=#ۓO=,2&lO+=*̲0lGs&4]Q,J6C9r6@mRY[ɺ.qk\[=*d5ǝ.uk]D&ע +tT^7/y3]oLK75Q[w/vezk`si/`ͽ+\+X0;WۍKNu0[bm/wMl3bx8}1{CF/1c8J^2;R^+cO&}axY3_ejܑ7oC^37f893^\?o*3 ^>OЊΘSlGC.+mF?5Қl'eKZ@>+Kmjzơ^FS:e;gV:+=<{k:͹Uv=8^6CgbC;*53Wkc;Φp)fڎI6˭m{;PXUc5b% JsQ5za"c&n#e7#!Ec9&9;:m)=ΑVN"@>/#&~Un$V$RjWTI֤X#Nl)ҡZ"[%0c$\:#]%Pd\%%e_Z%".&a;:dbVb2cGBf"JdG=e*bfjVg#hfV&i*&YiSj,kZl&*&mRE7'nJ]fo%k#pZ$qo"S0U2jB%sIN:'v2E)ev'~'x*$@pcg'z"$gS*y Ƨ|}{g'rdg('"h*qv%.x'ʧv^(z.Ptfb&"Xꢉ~huu(rj(z }  D.i(>̑b)A) Nbmє "3YiFRJBfƑJ"-(xiN)"(6)z)&)eFA*-*vrf*:&T6閪*Nէ@;jjїn)1i*jbA D:+2,)J+r)Nkj"kj"RjҨ>ge*ª ,k{ * k +:J;U6*vB).rVTJFJ Hgr+JΫ>jR͊+,+r:Y*RR-B-*":jj"lnN)Blž-FF2,Y-n>m ->ޫ%jOj>.,B-:*mFߚm>jk`m* -Y^*Vn{ n+%-p.mg3-J:`mQrn6܂mn+FQ۾*Zok.B.ޔ$.␾lJ, iT/m>lr,kb켒fնUʂj: ΖڞrJn?0ڦ/4/*PѮjFoZNbr,*+s) p1~ij2,*6ǮŢ0 8N 3*1♘Î1keT%'ЎJ.j/*0kϴ(-%Tkrnh=~!cuh%`$&1''&(( ))(*%chr(rhhZ޲f*&rdq+-r,Oa1 s2+$3034SY3abs6O6e7{ss]8_99sYs;;{%6Hjs.}@o+?< 4Gs>K=3-?/4ځHs`t k`4FEA\t\V4XGH޳J;3=S=tCߴt!@C@O*@t ,FSGTQRARH8RgoHu0˴R4Vk5F@G)Kc4Wwt[?HZA[C?u^Fu]5L]\o863G+4`5Jtc5Ub=NShQNǑVSotiRhwYs Ann tuSv_3jPScvq7dE'EurGqv4rswrt[S7guC6PfF@C7_4}R[km||{2</Â1C1C/(p7 VskcWwN˶^vxvNk'N8x#78M4f6vr755xK){8 ܖxMES)H2B-+$X{NQqwH7Ow4F 8983'?xSy{ ygw9yzw7;Fy7 (z_ +ÃVQ!1*)l$'k cjT#CCzGC9hk˸Q8yfxy t/i3eF7 P?fz93tz1)'P$x(sgizu_W{jPy)x?jz;4zsvKw6QWxW[|Ƌro{{{w9oLZTIwg4Põ;v`u9m̓xF5e7ygk|růbc=ÓFzw"t\;uG_;k?xɋ;{k3)=.9?9A`sۃ{ܣ}34=?/ gJRԯ+E>cܧ<3k_ɫij 3>'>%>e{Q=0)|'P#??e!]34/'H$0BoH>B?+*BoS  4xaB 6tbD)VxcF9vdH#“hOJ+IT$PhZLN;yhPC5ziRK6u4 84pAlXcɖ5{mZk٪kرes1 3m0eR p` 6|q`UkL(eBm)W|sf͛9w6.ݺw91īYvvl_]ɞyxp3K.|Q[)ztөW5c%%|xɗl\trz}^~|snC9Ҙa4T%0Pn?o EDKL]|ơ< "?*uܑ;q44/c<$DG* =mْraH2_ۤI -6|7+Dž>@$ͪlһ8]F ̲zxGAA5ݔӟ$)AGER?DP'!3XeS'34\uu3АQNK@ZuuE1g=# f}Z2fgutV"|/pŅMf=t-dx}qw:&]~-fxb[X ߈%ηGp4޸D& ů,Q(^K|keָE(%QJޙS\{^iH61ů{jS@E)>^~垛ޛ?E Sz뮿%[biEM(DEM?U_]emuߝ}I($VҜsP<襟kSF ?_域ߟQ=)Xfp+X ~!IXB)T YB1 iXC9yC%+^Zdn{`D'>Q "wZ\YE/~aXF3iTF7qXG;y4-n> YAR1?T"HG>$)YIK^&9IO~(IYJST*YJWj,iYK[.yK_/6LcT2Lg>єf-O6Mk^6Mo~EYNsT:No!!2, *5@J U "^"$h$&p&'y'((**++,,--....////000011111111111111111111222222222222222222223333334444556666778899;;<<>>??A}ACwCEqEGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~e!!,'2222111111221111111111111111221111111111111122111111111111111122111111111111111111221111111111112211222222222222222222222200..,,**))''&&%y%$p$#h#"`"!X!!P! J C > 8 !2! + !%! !!!$$%((**+.,-1//412734946<68>89A:;C;=E=?G?@HABJCDLBGTCJZCM_EPcHSfLWiOXiS[hY]gaaeddgghjklmoppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~H*\ȰÇ#JHŋ3j11cvuIɓ(S\ɲ1qI͛8s2J(< Jѣ}ӧPJMsիXj3S[ÊKRD C۷p<߰(c˷ߊt6ÈVzTLeQcsLQcz9À~ϑFM푳Tulpo Na"Eq !!,x V22221111112211111111111111112211111111111111.;+C(K%S"Zbpv{ { tnjge`\Y VTRK~&Cv(?o(=f):^*8X*5R*3K*1E)/>&+8 $,   3&@0K5V7\7^7`7a7b7c7d7d7d6d4d2d/e(e#k rx}%1CO X%_)f2qDzUhyļɶԯH*\ȰÇ#JHŋhpc(=fIɓ(S\ɲˑ 8sɳϟ@RG5 ݨiȐJիXD D5}ARJر% C)Uݻx꽪Ʉ43C-R"!MS1˘3kQPlJU,s^ͺkbʅ,dSjfd_ Nj0sЊnZ۸س;T>&'dsVmڸͣξ˟O >"߀ ( 6 J7쓠Vha||z ($(b<2&0(!z{dDž<ȏDiH&i$)0PF)TVieB# %v4bdih$a n)tixY"ȗ#qc衈&袌Ц 0j饘f馜<IH#v J*4B骴jkqH#nL(]<i|[nzk ,o=K<-Px_H."_Q:ꪗbyS=iB `'9!5}~׻ǹ| h!Bo_ P5, IA^y_wCN l A BP{A?""^y8ri_pKl=OcBшv8=wDB5L"!hHD:\\J6+D%-IZa2d'GORv$*զSj򅫌LʾRe-vK\RZ@bL2f:Ќ&3`vf&škf7?0BH8eF(PDFDbAZ;xSZ'ςcXD@7ԟ}G6>TD)Owv!=H ͢TH Ũ< g6jRԑ*EK&yQ)>k:˃TN/!V.!ɥ~*/RUQA)Q7fm9j2 d[ zu뒄Gu?4SjC^}@ul&TLQ >&H']޷<<ڂUri[#ZXn sRA? o#:ف8SW p+^5z"ZځM]bix 49'D^Sb{6"tZknGz7pxo>`">v{ &Sv@Ա)ظn3a#0Ö)T%pA HCQuKhWYDWNSo=2|Qxy6gpD(P1gkθ#jJ* BW{C-7̡wCrG*;8c9`洧jQZ>u;/ի5Z{ָ&g_dQMbNv%g f;B9 n{MrNwm kzЃη~Npz3ݴwAy'N[ϸ7 6I(OW0kB3Ϲw@ЇNt7OUN:O.$ !d0,xL22221111112211111111111111112211111111111111221111111111111111221111111111111111112211111111111122112222224/6,8):&<#> @{FlJaNVRJU@V8W0X)W#VUS!T $T&U*U,U.U/U0S0P2L2F6@9<<8 =0 >+>'>$<856889 :";% =)$?+)B-,D-/H.1K.3P,4S*6V(7Z#GУH*]⩧PJJՓϲj}vׯ`.KvlسhӪ鏠mʝKnŸ0µ˷_qKm ≯"KL˘3k̹͏C~ӨSͺAհc˞ ڵmִsmм qē+}9У{vN/onA)fٚ]%<5+){O/xrwOc;߀g}} ~5 yLEX!}a:~]XdH~݇-&AG:"xbUU'lHydxL_Ŭ]yK G Q`Ju*&O7j,C.aٚJBHx0&y" D)Rb[ݤ ߹(QeHd6G}pW7ehbGy )wSMvikOy!fW@l8鬑&Al矓6%G@$hrk.Mނ2+ݹ”n3\.\CO3K\-܍2Τar W2#ps>AADwDGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~lVA, ue8*\(C >1Cfcň cȏ%vl2J+])sf˚kܨ%M{d'ɟ%chєֵ0"B.4'À!!>,  "6:5--22202313603F.5b42p9/lD+[V)?k0,|4/;BO%]/h9p@sDwM{{[t~iuwqwsxxo|tnbnBi5e1b1i1p2y2z3{997.$!^(<*9,7/522222222222222̥}lgo˃̨{Ԫsުmw͒Ԟפեҧ̪}H*\ȰÇ#JHŋ3jȑ; « Hi(8Ȳ˗0cʜI͛8sɳϟ@2b]ʴӧPJJիXkDB300XQƮJݻx˷ߛPPMb0XqA)Gp1hϠCMtV>֥12Hia: 1 m Nٶa!ynKNIꋍ_`'h}@ B><(ƃ.8afv ($h(,0(4h8S<؇@)cd>I٤O.$TNi%UbyZvQ%cy$hFp)tixx矀8Šj衈&袌6裐FhVj\pEnʩr)jZꬩJkz鮼z+k&6첾F+mZjv .Kޢ;n뮸n-/^Z`/\ 7;1Olq3L W`Q2&|)|.r0L3,1l>2lH$.4Ӄ:5SH]5VgOw=W\mvgmvl6FL,q]7rmws}w{~'.x#WPgw砇.褗n薧϶.n;ȳ~G{'7|G/Wo}g}@=݇Ϣ@7ko?ӿH@L bTH  ,`q x@91G IB$F:򑐌$ JQ\&7 Kz> (GIRL*WV,gIZ̥.w^m/Ib2L2f:%2IiRδ&6ei~ |B&IrL:vC|<@O8o=z>O~ԠA{. >PVu(ֱuܓE!*Qt EIKjьԥ,ŨIaP41LwRʴ@}IkRj  NZT洩?'RWJԧ洛A[ܔ%x_W:ְիg+ZֲuoU\J׶sk^ZW굯x^¾u Mlb$K8rlr;^kj }(CuOO;ЏO[Ͼ{?0<\ QP/B!hj2CEG789HM؁K"(OQ؃WȄA{[H((_U]5Xe(gi8d^h] ~~%A X B0]~V8lV2xXH|l$3舉؉¶Hȉ芰(Hx؊x(؉hxȊԘx苿ȌXըhHh،8H(8XȋhhxȐYُIhVSOU~7(`UVP..92-6#Y6Y8I7y- @Ɉ=?F9BBy2ٔ1ɓ3N:D9PVɕYɔWɕTKN[egٕJY`yOj fٖcIk@ɗRxyU_IG;ylYɘ|i)t9Iti^ərdi)IYْXPI!4|XA cP pSRœ9(1 ̙29 ٝԙ()ɝ㩞Bٞ)9Iۙi zy٠iʟYJJZ:+) )˹$3ʢ jʣ5; -*7J IZGU!}h{G } ^P P`b:dZfzhjlڦnpr:tZvzx)EJPU*puP\D4R~ʨK㨏ZZ~Qکjʩک:zz*:jzzJګګZªʬúڪ:Z *:ڊJjꭔ ** Q@FS:%# X`p BQPf e m ۰e&@  ˱+b  {˰˰[+۲ ./*-5k242{@0=K;?EkB,˳H N{C+1KYk<˵P{Z;L;O[a{[];_˶ik`n;>KkkU[^۶Q۷dbw"и۸"w۰B@|꧀_۹Vu Qut wۺ;[{R'+X'CP )`T`7ON NL@ssWs" w   b +L`;7؋sTKK7<[{ \ <Կ |L< l k|| $,(!7 )<#":F: %GB>lU\W,6NIL1Q\e V@-=MD$m-}ɚ,ͬ7FU:A ̻SUgh q-k#ì{\%! UU @ oكUnX`5ىUّ}ْ]V-XMp-t-ڊEjٜڡڪWښ}z5۶]ۥW٦rۙ ڶ-ۮ i%ܻڨۭ ݾ]}=ܧ֭,M=ڍmްƭM!]M`Gɛ)p`JjVA^mؤ|M V> -U)}AWᮆb@75U9.8~@:>28^?n4A^3HRRW>nZ.aM]Ndf~^Nel_Nc~I>G^q~np^b.X7烞tn[v䎞o{.}>擎螾y>G߄䇮Kp @j9jIj뼮-sƎj` NNj~-H@KnN^.^Nn/ ? ? o/Oo!#^24, 8/7.C':nNp6HmG0 k⃴쁴K;G![+HHH/b_c?O?nHo_Hoo/OO__//o/ֿ/_/O_oq `>Q$+WQF=~RHL2``#FZSL-Ҵ˗4kM>)t'̞89ѣMF]ZM1*jURn},Q^&];U[q: W([c6o]wҽZX+ޮ;رŇ%ږ)b`+'ƝG3&+:0꿏W[.0˲?m݋"_"I@R"I͝?أ:"۽ٞ=fx'/>\/|ӏo4?|ﯾ CϿ TA0A |P 3p:pBc03DG A B[FEk3 )(:#D# (R*,|r*/ńRL0$2ɴL7\K527٤sN8DS=@P? O<AtPEmtG!TL\R>=SJ ݴRTRGMUMG"X!K2W]s]!"Xa%XcE6YeeYg6ZiZk6[m[o7\q%\s-6fU)p5^y:s7_"7_b__ ߃^v^#Θ7EN!.%;6yeUyfevsfu~ginghwF:jY:fn:iO6GU [-r^^-X!~{ߦ;߸m|疻{p#p;p7r|r5p3%Gt#MgW]avy\=';G݋=iqW^go}׹}O'>B '܅mV?`8@ЀD`@6Ё`%8A VЂ`5A(G!DC5rЅ/a e8CІ7auCЇ?b8D"шGDbD&6щOb8MP@DHauq0gDcոF6эoc8G:юwcG>яd 9HBҐDd"HF62Ǐ +p bxĸL:@9JRҔDe*UJVҕe,S II*Ĥ&9Kz e9LbӘDf2Lf6әp J^2ĦHKPg89NrӜ4'-yj26MtӞg>O~.SA0;q ]ӠJ~6ԡhD%:Q|3hA m*iHE:RԤx0zIn]GO:SԦ7ũ? %T -u)GSzԨGEjR:}>jP ȔWjVՇ*'=QrլgEkZ K.A Xp<0%0׺WկգS0- }]yתuld%;YVֲlf5YvֳmhE;ZҖִEmjUZֵֶmle;[֖qT0–AHb:ԼQu@nr\6׹υnt;]V׺nv]v׻ox;^׼Eozջ^Wm4g*p o !du^Fp`7p%^Q`@dlY6_ `0Hxv#=iJWҗt;5BrR~+Hdt%\94Aue=kZַ5 M׿v+k@Fvlf7*`5]NVĢXLKۄ&DBFwսnv=oz X~x>`נv| o|!G>1o-܏.nw&½E>r<,7Ur 8&P fC!" 0V~m1 |GxLt7)VA˥>2yhns>,gGtoWoԩ>[Նk~`ܢH_;x7r{nMW\x8-E;G}!/y;u{U灌U+7>Kz^}[z{] f~~=  !]v4@0o.~7-Poq/y/}>̳=###h???+/; ?{ A5??#$>T$A%S@? 4? $/ h.@:l70Bzj,|.4h)A=3L:ړ>{#3vkKcоwex7C#K hkP.uA䢿(BAE>FB!tBlDB:@:(C.Q,DO$LDRD|'B +,//--B @270384D.5t7á<>w[>C\|vwPlԅRJP"KGL.P@k(|lKKK +eLFdPOUȬBIҼH }S8HC M0K͙gBCP4Xɻ'[C@Q\Q} u >RP=NJh8v3?=' O3OXG*uKEV\E\@f؀$TSƌ\./l-PlL.i7_S=V-M?eU% DTAuBMԙM|GeHj^Ԣѣl7"=LJUXr,RN]U>K\KBKlˉ5T+OTd.>,$D@S|bR2GDmRP_S:j{Yn >e҆%re]ZlXBeZkј6{ T~mn$GpR @UULX=ရZa5<N6+C$:4׵'|bѳ,V5-bkc'x3F<6>f:7~XbHm㴹cUCa=>4GdJ7y-d>d}cFNHPִIJnKLF(28O>H9QZ3 dC8λcUވMTr8Xxk[Ve>|K\8Cfb_c`^6aE~V{5\pg[5^csF$#6c{vvgwifBfCfaN||MId`}~W&f56hP膦hVkD6ːg&"阖陦隶&6FVfv꧆ꨖjgUfc&v$Neni+뷆븖빦뺶FN!FC&6lcFF>džȖɦlVˎ>kǮmthfvjӖm#AFLnK=@Vfn|knC&6VnoBo]XNhom^okoWgp&p6:n  o};,H]R뀧4;_sgʯplJrXOuy&À?o̿lͷFybssD_BOCTG_W?$w?awz}7GwWf_`^f,h „ 2l!Ĉ'R8P_7fd4_$Mx1ӧPT,l  0`8F9'РB-j(ҤJ2m)ԨRRj*֬Zr%ذbǒ-KNA$iJr<0͜i5/.l0Ĉ2n1hvrdɓ)WF]8uR4ԪWn5jϲgӮ-Ƶjk7hm8ʗ3o7Nmf{w4nǓ/oGt K/V<99u [4`3mh}aʣ\M;֪p՝` /-2N63;_7WDԺOT/ ?VÛRFr|/у>W9_=|< TΧtZkf*=~'&O{/2nhzV-lμj 0Mo_Uֽ^j,,+1C#եi"䬧X^*8ueYg8HZpeb5dS.Mj CRIUk#VNRuЬmF檷o\ ה5Y-n}.x]N\S_?{y).iq{T67x7]Uu/ _B=pyqfz;z]2Jda(tlр '5IKb0x.S|lJxo1یUcxDF>r}{dXkA.א '$S9DK2'+2e'3hTG0YcrYdRn37f8/]<ھ{~58=t ,SSju4 iIWeoC=M_ӤEj:bIY+{bfZ󚢶5K)uaE~6}(Hڅl|)N.6D9L1RnkOAv`E颼n{vP~CPFRq6vDx Ã#p*x.zAe{%4NÔ{*6߮q}e궝MpF=чq N{Y]o%MPMw RɸS pt ?q8ĕu'6{Sh_e&1uD{+eqޅoNB щy"A Nҧt]n _s . 狧=}r|^[_˞;h/S xŸ{s>("_tFwy'_HAaw;o@q]t!yg?|]'y=5@yPd_ \9A՝O]Q^  ᩠U 9]_Y_-Q a y_WLޱT\Pd,L?׍i`x_T[֝1!^@u%)Ƚ@!e]!0`Pȭ4];_""%"$ŕI`"_'re" BE P".b+"߭`+.:"ֹ`Nc ~"Y"Y,%7y:b-ک0~9%"P0aك5[&HlAh! *B_1"i P,$!`0\ܥ!DNdZ- &Ñ;& i *$$b**E JN.dOfCҟۅfcdP]N>$O$BY43ۻ½⌥eYOܝKiOvS:$Q#Tj<8@aP[=(Hxd5.OZNNd_~fefmERb:e%[k.\2B%R\_ \L#f C1f%,. fD2th^QfE#P Eݢĵi.^!ldTQ#V4g Mfn"]J纉⺝\g hNw`r a6aEPAADHf!2'VfQfeڡ~fhhR{ޥTzM* "ۑ{n42VZUpAAHNӽ"N_vgIPajQ(݊^"ReTVJ&:t ^RL^j~Ry*!`bJ)^8^΍݉gP:#Wj "Z#EtC'yΩN[^$V7f~*4($O?0I^`[(-B*+q6a!'"ŖÖ&z_Yܩ5%]B]iR/&Fj"܊l–lzyb5"~tB}VAǒ:,,ͪQyΟ뚂+"[l,Rj"ł1⊺ &!(މD4` .{]2 Ƭ3^U` J,T. NCȶ.l`7^.d.6 DlƮ]'.Jgs*QWl9U&SJorWzvoآg:͹.ʮ/aXZmm.n0E^b. / s`$kbo*8kEUE/ "GOskj80B?1ZE(PX&p" kGw; [ f߯  'w;IoTM1+qKMj|11T >w3111q1![ G [p!72L$2,;% $Grcڔ]2(gK&&j' *(G$?Ȣ*ϲ2{PZ 2-2t{{/s}s{173 Ĕ(aDZ3_@s4=25c86s23:sX94Kp'3=G;374O08Gq=srܳ8s53@'rt3wBGb04 {rFo4GwG4HH4II4JJ4KCOǰL4M״M4NN4OO4PP5QQ5R'R/5S7S?5TGTO5UWU_5Qt4VwW5XX5YY5ZZUkutp5[ǵ\5]׵]5^^5]5t5_`6aa6b'6a5ps(6dGdO6eWe_]3m6fwg6hhb[4sij6kk6lfgǶm6nnvZ6m6op7qqϴop7s7s?7t#vrrGu_7vgviðvx7yNO7uw7{{wqww`}7~gwgP2x78^wd7'/8c}jO8W?_8w/x;F,LJ{xcc8?gHw8mϸ\2F3~wCqj/96Eu7O9EWo9CAG9RXd99yyX9繞 9:86 :'zK?:8G_{O:O`:kET:;W::o:E:6O׺zs4uqz:kߺD亱/;6#K'yġNPǛYcCC׺ĝ \{) Lö{?E;T@L[L**Nt)hl: ,YCM2̴ tLklwѲFK{t`Mo)Rw>㣼W@R:^8wfG='2%3wr>韼D;7@AP),p BR.0Fj`v4hqĆIJlPJ#@9fM7qԹgO?:hQG&Uԡ>OF}hܿ HPbOHj;lYgѦUm[0@qJǔo_BKz܈2a˂t/H%/ SLܘ kRM59?-njS9"$p?olCMTE+ϨΤ1J@)PPAlTM9C*>m.}OYmWau0{RO͵T\5_ VaQoU]tBe&kVmo Wq-sMWu- @Xd\*S8" .NXn!X)1 )Mz-y,^ ЏmB>)iqYy矁Z衉.裑A 5 V4'5d3"`T[.N[n[mR1BI^; !]o!\)1\9A]ZH$d/p_Q?4BRq]yS)AֿImf͚x;`ߩT:Uj}~zo罖HG_\W~:??1pڟ)1!pqb`FeeTR5B04a>ȺjP) B=Ԟ qlav%J*E/(_dUb5h+fQ".zZјF1J#]Zb]CƘG 2HCx7/k #٢;EuƉq " yQґt% I"MҁdTu>YiS%`Jar,%1iW.ܥhiK#G3яϼug*7u'+I:*-Oa6 ;fmvsE,a6uc;g;s{gAZkn hEE!iO5z1(Jҙ`6ed jUKS¬JH MW#O^.k:.WGDceu}]Alܾgrݻ97dӝvϛ~y7`zH7\%Kk_ʿp  8#} |81NN4G^r7LaW1gǚߜyws/3 Б.袇Iwz?h^u+a7~޺bWm;.ߝͻwwWx~y^!_W;y{oyϏބ<'qүo߮٢qZa 䛮}{>fE8ԋW |;> _o~ׇ`}? uޟfDQ~ϟeg\~/BoD 0CmF0+Op,{9S ,6IpQ>M4JpS#e0ENRf0$u)K0G|0=PPp g 00 o 0o ՐDC`o k!" ``@P?@ ` `a#' @ 0Q9U@ ` ap}Q j!T7@1?0b AALR݂;`#c!ֱq1H @ّ= Ar!5(:"*$*2%2r#UR2! @V'I'''2((2)r)))))2*r*2+r++++2,,r,ϲ,r-ղ-!R,2-:9H! iuWr0.#/#Af& 00%38ZARr2Is& 92S39<A44e&N943Fs6I6"`A3Ac8- @7s0- @ s;U;B @<ɓ4q7=K=>13?'S?ӂ??>S@ @"<S=A2n::s;/CSC83753SDA ` ?AaEY],`TFiFqTGw{,~tFk>o4GCHH"IIIEItڨtII4KWQJǢKITLuLA"LմT,TRJӴNN" tO42tSb :!HtN4Q}QARORtK-Sa ` AONAU HU N5US`U+UTTc bFiVW=Q t>TXUXSdQ=XU @ `BaYu u `<%Vu  [4u\-@^ɭ\u Z]]Ő^Mu _]˵ 5`` 6 `8aeP1  @ 3c5vޠ T;SOv Sv[e1QfMf;f g/1ff}V 6gGhgfuei 6jljekUk0eVi@]iɖ k lmvʦe]նinm6mhwk4^ʀKV 5g 2qrGrny, Rs9v"K{zP!! V]{5 a Зp7kۗ%a ` LQm D&7UA7ˁ&U>}OłׄQvLK3W׏aqg]ol{t8 ẅe/l׉}8y_π!ϊPx89. ǘ8Ϯ87x8xx8ڸXsXNEY 1'*Y/y9w"A2O9RWZ_bgyjoo;Ow9M9.͘9{Ѳϖylؕyd9ӘX9ْyʙLI9-ZrYuڛ  zڟ%.آYَ٣?E:@ڞO%zq0y.PYZ])ڤmh{I:x:yO~zoZBFy_ڌ٩٭z:k?M:Y z麮:z;{ ;{!;%{)-{:2f9=A;E{IMQ;Ua|`]a;?;Omq;u{y};[{ahD;{m;{Y;{۴{ k;{ٛû;; F@ۺ:Ye{\ba 9;AZ [-\ *w[=\aAGCb~1 A]<«Ae\ IgA<`I؀ǍQ }G]] g]adٝ~`L~GP7ua m>>e]{թ= [ً~7͏Aڟ^Ư%>Q~v~]`@<_Q]}# es<}{Q? <0… :|P_+Nd4_$Mx1ӧPT|<2ʓeX 3̙4k8Ӏ ȢE}=4)D-:m"ҩTZ5֭ӌ:d˚Mڪhҁ}DtB("F=II e;$f\XIŐ; e "vlaēKfitMzn@@R$j7ng9;z+imrԱ}1ƎC,)Xqʖ^z]>}dUFk a[u` .hq%8`H5'Yǽ%Wtv{mw7_k>epYf>lf|q&XMmpSN|`aFdJIN>yT}WwhT,劬5L PIgvigxyQ_ߥ6G&zqciff(+ȦN?|~ jzB9:`A`6IfjciPrl>'^U)6Ve~ߺXJfrYl%;ԴދoʙoYU[Vjij2ZהN=[ѲTY\nltoQO6'tux V<2Vd@x,r\-7tLbpѮ8F3\,O?u:A\s#^c]G 5`d+tv|*"K[ 25!Es1ua7MMSG=C@U0s}բq 6-lc6&=vWqA\7^6׮2]$6۹޲6ry\u!tނO`mbn- uFyW޿ct-B:@m[:(mZf hy`:㼑-l;1 z2^34xc.ƽ>WoDL ~3]иzX#*&:+zNlD0\6pm3f27aDHB c 76Lp!52Q_@ބXHMq8t7̅j;)X:/^ |Jm34V*%B2G %ejI[ dT^/3lZ[&l.pKD-QVn?F/zWFٹEwvQ+F-dde0#zg:ǀN2w8h`ҦG MA-NJ4`W&N~ظ\wR] TUӞw$#!xŇt!hȆpܥAĎ]c=*A,(2*L^"FhUsCGϚ^M!.tg 騸Ei)-;S:3^fGrwA~G=~~;0ve#.ӨX9vzacUƎVvlX3 >G^30lBmgVo" o[_cŖLR*%Xӕw%pk>5rÁ-y't^iwXJw۴n:^魯}wThI^a"~7|oY7 Ǎ{'I x0aHzx f_ f8GJ1wW|+K< yD.$+yLn (KyT,ky\ 0?A1Ѫcتyln 8ytj7axi'xk~2 { ƒ.ra 4_Nv =_\J;/`'9Yu> wO|<^P+X)$Q9>޹uC p?o9sh 'GI:!lpyǀ A~Q^ PjyWg4H` %h'7FRp恗F);ȃ=HnS`P80&7>!5Q(SHUhWY[ȅ]_a(cHehgikȆmoq(sHuhw80G\0u@ 20#㠈Ȉ舏(Hhȉ艟(HhȊ芯xFQe8XE$$(@hLjɨȌ(Hh׈٨ȍ(ը h爎(#@X$@ Hhȏ)Iy `p{Sp !QX8X!h#Ɍ@BrȒ P&Xs0@9;ɓ=? A)ݐ FY $PX Q)SIUiWY[ɕ]_ a)S eАg|\0C$6p;)̨ƨ}z) )I`Z X )Iiɚ隯 ` iA .e"A sY>uiIw'ωz שYs ٜ๝'㩞ɞ )Ii㐐 Qyi ʠ  *Jj Zz!rȁi{p>2 a `!Y?pr ԉؘ!r:0F*8BjYV 7@J!Zj q*sJujwyZ jʨꨏ *Jj Za[E($)Z4l#:)c>7J0`ɫb7**2Pګ $2ʬ>!1ꬳ Pʭ*j窮ʮ *Jjʯ  pp PF Z @k˱ !+#K%k'AD`HMY} ĉDow Xq !.#N%^rЂW+^/^@L`J`AP;=?A.CNEnGIKMC.}8WY[]ayBc1`0 OLB q.sNunwy{}.w ѤV.W{`c@c醽CI0ꩮ.Nn뷎빮^>.N#S~]~\pDRJ@ٮ.Nn^.Nn/Oo /Oo!/#O%o')+-/1/3O5o79;=?A/COEoGIKMOQ/SOUoWY[]_a/cOeogikmoq/sOuowy{}/ LC?o54Qzom?qO?1QFaO_/u4<ﰿOOo/졯Oٯm0៳ݿ/H*a\!!=,' /             !""##$$"%A(!h,&.(/+0.1/1011111111111111111111111111111111111111111112222222222222222222222222222222222223446485:6<8>9|@;pC=dE@ZHBNKEFMEGNFHNGHOHJPJKQKLRMNSOPTRRUTUWWWY[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~͙A4PB BaŠx ǎ?EI2$ʼn#_.!C/b`C7~ È&GLYrB +(ѤAp'GN0 JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ%*R:Wh]lk/޽N-€!!2, *5@J U "^"$h$&p&'y'((**++,,--....////000011111111111111111111222222222222222222223333334444556666778899;;<<>>??A}ACwCEqEGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~e!!,q>FnP ?*, >O[X RIE!>*8.2121212222222222222222222222222222ROzp{~~zzuuqqmmiidd__[[XXWWYX[Y_WxJҡ2 h R4H>8844..))((&&((()')$('.   {w n i c ] Y S N I D ? 94/*%     &*,0331!!8$$8((6++;//C44F77M33S,,Y%%d$$n$$o))n..r22o66m::o??nAAcDD\GG_GGeJJpMMxNNuRRrUUrXXr\]o_akbfbamUc}8cmzeGC'cI[aefiltVz,  /PoajhkopuuzzՀхŊčʑǕ˦ܨۭ۴׺/H*\ȰC="Jŋ3jȱǏ CVH2ȓ(S\ɲˑ%cR|I͛8sn,YΟ@ sbBD*]pS~PJJիX$BV +ٳhӪ]˶X<:{x˷߿ L|#^̸ǐ#K8^t5kϠCMzxO^ͺװc˞myofp9go N}KL|9УKNx SxOӫ_ϾÏO_ow9SF;& 6F(!M`fv y饏 A<)΋0(4h8(Q4@)Di6*8oxA:cXf\v`#QZIhl鬃\w(;矀*蠄j衈*Q.裐F*餔Vj3ŵ?'80Djꪬ>8h:=M2O{ 8rdE*:+VIe;rHjWֺlgK=m9UB֭I-&'Yɣ*o8 v+VȮvz xK/.Ŕ|K_DbPf?wh!LFH;'L [惆7w8o G8 g']_w 0Y8αw@c>FƖ8!Pr-0+fnCGˏGxgAhiZHf8`2&J[Җ7MNwpR_ N5VUgկւg$9hra$^"RlW f2ִH7[;ޘ=ς76]hCGCщft-iJc4EMPޝ&SVֱ{Gj#'nNX'W/9fjmnt[~]nC;vt' x[ޚƷ} 7>p;NGŸ:$Žַ옒;ƙ;f#260@xDhj|X}~PpTSHW~Ѧv`f7wd(0whwGx? H6DX8PxӇp [_XPWXv8v/288s{7sl8|H&FJhx HTT*5]v$׈(wXww(k|fȈʈ xHoy}294Iڈ} T Q%-zn+xw2W98=x$(y,jX` 7؊ X'gh5G(mo %ٕ_c:iտ \Ͱ<_ GԷ<Θ˓6TIzL4؁Մ` bdzJ)Q=S{ٞ}M̂]ڀ]بՇ|jAeMԒ؏lmЖ- L ڤmڂڅګщ "mmҒ=ټn++p./½5pMܡ-ޥ]_0]_}Mӽ*hȸڽ* =Ͱޟ}mU߫ lM Ah*p݄ .Mm L%&*-R.2> 0`Z8:NP0c@~M jlmN%emi&^)/S-U>W[^4p舎ŭJ@a.dgn%Iw)z}2./儮>^.ړ^@>j*u)nЧP}.谎峞~_.^`P~.LG ّ-ХOݽޮ~J>0 ?_Kx-|>n1_> _}j^֎)?L+O1Op3O6`:d%= /UnKt_uR?0VYOa?^9/ODI'En~sox|?a`C>Oj"?%')oyR;^NP/O/AONR^&// _ʟ/>A?ׯ$)1C d0a QF9oO.$P/Lpt%|B#C C@+o4LPl 6uۏ?jƻ38r1N:LI&3t3D;O+%4,UO6/L1L*p5*%LDHB;Gό%UUWe>=2Bg5CdqQFss?H[6L3K1TSNhAP$5ZiEUk[}J@CVogDgW^e7`-sX4 4vd-fiwj8lQo4\d$vϬRM1yۼ_Ǧ##dG92NF9e ځ?RPgRq[tx7tՕxbJ+>b5xA ͗"f1Tj[vUYV-qvX-hgI^&ZY;4'0i䩩VXkU:׆UGl9m5;c.5gӸ! ;[`;Զnqoq!xCS*!No0{wakuO"X7,%Eҧ;vb@A*7?YxK<&dZ=u`{riv,0[&‰|IES<*ЄßN0 khn(3CuocC ю;!"}8vpXE8H)F³0Erы_XF32-d&56ѓr("Pʚ kzlHwԣԤeJȀp/efu\E;-S'QV&ڤeK5y^zӿ⴫^aK,pPbWJ1ڼ)d;fQteT_ Әuig=9bVhiLծ5$S!)V׶jewתZշ.CY׼E/zC1׹lucgW׽%eskYv]<`.?һ\s{XΗx/~q_0Er?x͂mZڱ嬀­|凗Z7xΣz?>tG?:S^"goy kW=sK9Azϰ_z5g/{9r]J_zV0r[4:zev[?/v3^$?yWp~3@ EE?zҗ>}tO ֳ:e?{#}y|z)G~ENL>%`W=۰}w?~~jg +='1GԿ~m}?@C;#L>.??ӿ < @ 4pc,dA@ ³s @A$<=4DB{AA (A B!4͓0BL1\B&lB'|Bě5d6+BB. g C2,C;KCs@(8Aj:C;D<=C?{KLMNDMQ$R,9\DhDG =H=3DKXE[\X^_F`DTUCWDXlILCF`ZF[\jklF^ n a$F0FCreCY@gthtGExyGl|}Gp 3ǁI&||stȇdgtZTNjHzG~H~p Pȑ\H@H?dɇtIHȊȌ8ɜɝ8ʠʡʏ$F;$ɑ,ȥdJLɔ;HJH`Ʉ|ɫlȘHIEHDxɱ$KtD˴TK4Tt4Ǧ˂|Jʪ|JEʯ,$XL̶\ķK$˹KKKvK ̯L4L9$4MTa-~ rP @a΃!&".F$Fa PrW`@&-_`16263F#V5.` 'fbbb<=`/a01@HB64 PEfFnd7nb(9 jmacc P]@Ad@@TCfeDvW~eHIJcN/&e06eSVTփcFdVeffVDhVdH.sDP[e j\v]v^_`aFgA.fUvvvwFyzg{fk'nWm>\g%g6Nu6fxv~{hgJgUf{Lbr..h?>U^hVivvgy蘞甈䌚6h*~a(a&&V?@Vjvieރꨖ꧆ih!hN` >gNg6FVkv~멖빦먮jg挪 jfn6߯ k&Fk^fldž뺖ɶ,lgl>K-Fbnfm׎kʖٮlͶmNrehj n6ņV~m>pn>mkո\bs6ofv>`vf. lnPWgvommi*Ɗ'ЂWgqO ?!Z:1oa !'"7#G$W(fw+,-./01'273}q (o~ &qs<=>?@A'B7CGD851111111111111111111111111111111111111111111122111111111111111122111111111111111111221111111111112211222222222222222222222222222222222222222233445566779>:E<|K>nPA_VDQ[CIYHH_HH`JJ`KK`MM_OO^RR]VV[ZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~}yvkd`__b`_^^]]]]]]]^^_`abdeeeeeeeeeeeeefffffmu}넾-H*\Ȱ!|Z§%Ë3jȱǏ C1Q>’˗0cʜI(NuRK6 JQ:uLzӧPJ4aթXj 3iC\ÊK +˶H{n3ڛ !ݺqū7fKtǸǐ#KL˘3k̹ϠC36pCzݕ'[װc˞M۸sͻ N|7ʹKLO`y fZ4hКiνOӫ_Ͼڱ_@=V]_VlD u2X k #5" ,fv ($h(,h,X@8$=>??A}ACwCEqEGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~e!!,L-T2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222<;DCRI\NhQxsQcPXOOLGH@C<>6700,,++,,00333333333333334444444444444444444444445555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666667676767686:6=6B6K8U=^AeDjEoDtBzGҁLӇQԊSՋTՌUՍV֎W֑Zה]ؗ`ؚcٝf٠iڢlڥo۫v۱|۵۷ۺۼ۾ڿÝŦǭǵƼŽǶɮ̤ϠНњҘӗԖԖ՗֚֘לף٫۱ݸ-$ʘ*\ȰÇ#JHŋ3jȱb&Zh=(S\ɲ˗0cʜI͛8sɳ'M9%'ЩH*]ʴӧPJJիXjʵj =QD1ڵٳhӪ]˶m@oDqKݻxڕ#R޿ LWO_Z!^̸qZ:x˘B 9ʞCF褠O^]0룩_˞jNIH:v>xn<,gޜݬشkj;*]\-s%˭sѹOǾ=%4n!U oGMnS)ԌԂE8a)8H[MVx z)^R/(38FbS9bV79;zI.79F9ێLhpH!;d|Kax!5$(嚗Q#'Ff9K5I΄Hi|*Q"&2fR?x)SxvJ4 5iU:٢G3r,Frx$}E*kl)+^#自)'Q:˴*:sz..C4+kқl^M{/,l 77o]1OϴNw\NVz(N2O)!* TI<@-DmH'-t=Rl)3mXg\w`-)A-uY$lpJf]Hc\|wWύRvc='$7G.Wng Y}nHR\欷W#Ĵ>UX5хc4ka'7G/WozSPCPoY/oE#!y;׍D$'H Z̠7z Gxc(L! I0 gHC pȡk@ " qBp&:1DġQzsތ&8E itQ1Wf VB uNE;O+# &>- xSh1qP~C(CjBTmhz`곡xEGNγ#&,tT!!,2222111111221111111111111111221111111111111111221111212121212122212121212121222222222222222222222222222222222222222222222222222222222222222222222222222222222222K2k4k5W5E6=6968676767676767676767676767676767676767676767777777777777777777777777777777777777777777777777777888899::<>??A}ACwCEqEGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~e!!:,RH   6#X)~#,)/-111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222333344557799;;>>AAFqFK^K\OOQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~H"\Ȑ† >Hq"E/2̨1aLj? )r OD(m%K4(s&Ag6 2ɳϟ@ JѣH*]ʴӧPJTUVʓkN[{]PmZm%q.¸j5]h^} =` z5k%!rGˏ͢ !!),C222211111122111111111111111122111111111111112211111111111111112211111111111111111122111111111111221122222222222222222222222222222222222222/1-0*/(.'t/%e/%X/$N0$D0%<1%42&.3'+4')5(*5)*6*+7+-8-/9:2;@5=A9@=>EDDJLLPRRUXYZ```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~|z~Ġɝ͙їՔؒۏލߦݫ۰ٵ׺SH*\P!.]5Hŋ3jȱǏ 1v82ɓ(S\ɲI)aI͛8gʔϟ? Jt(P;*]ԤPJgƝR"ZʵŠ=FWIfxۜ`ɝkٷ ܻ=nR\K0ʸtϝSvz,α3ܳƖHb R*OmVNݺjKK߽Γqױ;Z.-Npxŏkw:s^ؖ{.w>Eݿ~WmI{ST:4~I u+WOM5yzT(;{VPMV],R"HdD6?ME6$KމJ֓Xf_ 7i)"flp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*ꨤjꩨꪬ*무j뭸뮼+k&6F+Vkfv+k覫+k,lYLX pm= WOU[qLm̱R T"Dr9M*\S.s-LJ6ߜR:@-DmH'L7PG-TWmXg\w`jd}j'tFAemPvv"@b-PF ߋ8`Dn_!!,7222211111122111111111111111122111111111111112211111111111111112211111111111111111122111111111111221122/0,/)-',$+")(u'm&d%\$S#L"D!: 1 ) "        !$'*.!0$&4)+7-.913=<:AF?CQEK\LQfSTm[Uq`Ytd^widxnkvqqsswttwtuxuvxvwyxxyyyz{{{|||~~~H XȰÇ#JHŋ3jȱǏ &I`ȓ(S\ɲK%c|I͛8s”SΟ@ сD*]QMJJӞUjݪ*O`Êu3C4_Ǫ]cٳiʝ+B2n1 ,/+j8ǐ"tpȘ3<&c-C֘3&G^ gЬcN)0`0lPv&N>8犕3w:_#]/)Sٽ|],ך}/L?W/k쇔V%{^vR܁ VؔLS({u8?SvXhR *##b5$(P2ᲆ{xO/.@#kǢT1?dM=ˑ=C=RDvcJ3 tlifRˎH90erBI.,gOiRǟy)L0ę4DJ.ާ騤jꩨꪬaVBj+Dz뮴ʫZ+ ʣʓv,XC˵r .B:NUb/#.tj NEc /5k[o?R+1`/ZOXg=T03l4c.ƻ`6Q6ze+0;(Z'j9{%_y騧ꬷ.n/o'7G/Wogw/o觯/o HL:'H Z̠7  9"j& Sh".|Db(Cа!"R>!!F<"$21!!2, *5@J U "^"$h$&p&'y'((**++,,--....////000011111111111111111111222222222222222222223333334444556666778899;;<<>>??A}ACwCEqEGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~e!!,#2222111111221111111111111111221111111111111122111111111111111122111111111111111111221111111111112211222222222222222222222222446688::<<>>CBHEMGQ}JUvLXmN[gP\cR^_S_\T_ZU`XUaWVgUUkSSpRRtPPyOO~NNLMKLIJHJGJHMJPMUNXP\R_TcViXnXoXpXqXrYrYsZs[t\u]u_u`uduhu~lu}ou{quzsv~tvzuvzvw{wx}yz~{|~~Đϐٖ╿һѵвбѰԴ׷ܼ޻߼8 <*\ȰÇ䈠ŋ3jȱǏ CIɓ(3[ɲ%dI͛8sٲ'Kev Jь|*]ʴӧ.JՐPj4կ`$Ii16ZM˕ڶ+웻Oݻx7ʥKW;]˗È g8}yIe{ߢpcƋhy\|yɞ/@)qD n$Gʑ$)A">wKN \R6)A>@y.HEsc Vy'@iVtP%A^&>g㚔^=b*%c$ɓ7*)NgGJ*/ϡzOqՑs=VX]k&[ley#Vkf2r+{kW+ky<-_$`{lp7\UD,Wlg Ӳ%lS, *w&",Tl8|r(9@0ltzBsL74GGMSTm1A8<ɠp8`(')Vp6Rם7x5%y%r(7~7yG.W.9vgR Jޞ%3n▷zj.{Gypcߞ;7M'>~޷%xN{uP;ϼЧ/Pմ]R .yRM0jOqo_G$ =%'x2pv}46z GHBr9dH0 gH8!2B_z82"H26뇲s *ZXdH(2'Bqh+ш.hL6dTFՐx̣>z(0Q5L"F:d$kH撘̤&7Nz򓞤 %+yR(WV򕰌,gIZ̥.w^ 0IbL2f:Ќ4IjZ̦6nz 8IrL:v~ @JЂMBІ:D'JъZͨF7юz HGJҒ(MJWҖe . LczҴ*6TrSD)P"ԡꤨF Rj2&N}jJ*ՓP%*VGխ^!!2,R  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~ HY3]fZ5* !! ,'`22222222222222222222222222LLaa׉۶~n`F2"%Gm}v샼>D7777777777787=6A6E6D7A<:@3F.J.J0D4@3~:3u84c54V69H7><7B<9F;:K;:K<9LH*\ȰÇ =HHŋ!jȱǏ CIɓ(bXɲ˗0]\A͛8sLO< JѣHl駩S?1՝J#ʵׯ`ÊE٦RRVX@Q}Kݻxb8mZ iwIy+^̸ó.!ev[k̹XQAOPr[){^ͺO'Ǟ\Ur_ͻw[vU'U^μiNR>i`K$4@8+<<:FBt- إVa'gc$=f6EP2k6yӓv|&#[s6d%^y ҠqhĨ#)S5@Zjs JAgKl(|N $6lRb ~A@Cj*ϲ><-tբ@U qbUBhwC+ E<4oz*+ ] Lhp p|{bl4H0l esA#c4f5 X]~L{? 4 6!NrfYqd4?LE|W~a䮝ۀsM8rv|=V.4CPvqJ i8j?vY9DsaNNSl;98/EduOGbp4 7X+wc# #/N}n ;oL AG:'8Zt7 z'0#LaNO04 gڐc4a oC"pH$:QSLbH0y0RaH$x__hvѾ1ύQ,H}v##(+[1\`##̶ \83=}d(IqC$!ܱ}y#؇0<(i0zl&FXڢ#*̪l')^B8)^4&]پ(5ه]e nde̤3Mj2eJdRL89d@,eݗf擝$Gy‰Aϊf&AG΃r3(MmA-R ~AQ&ȣ4Ps3mYu ˑx`~d5- M3rT>Jּd(Z,ciJׯ5ukVD(|]_;Maƚd?td N!e1Yh F>{Bњ!iWֺlgKͭnw pKMr:ЍtKZͮvz xKMz|Kͯ~LN;'L [ΰ7{ GLbx(NW.j`L8αw.-L"HN2PL*ضVβ.g^L2xfNf%˶p|fx3T@MBЈNF;ѐ'MJ[Ҩ@Zg@y!mlʯeq^qTήe4DqH֭e5{ \Żfo}mZ`ӹuga ;lZn6LNWlokآ_w[3lQsLXegf~h ؀@66kx&hc)Ɓucj谂,؂.0284X6x8:8'fj&X8gviFxHJL؄NXhvjvYzVVx[ZX\؅F&}^b8/dxh؅Ŗl؆znrf7vx^ox|dlׇchcXdֈ(nx؉8|av؇{xXsxm؋g88xaʨ،茓8hȌhؘo(ܨXXsvg긎m֎fi6Xfxcf؏]8X IXl& e~HIeI6$yd&yE*9d,ْ?0c29M6Y8(<>.BDY4yHySVNMTiVy4Z)Sٕ:`ٓb9@Yf9hFlnLYard\9w yٕ{}yI锅Y)ɓi9 ْyI鑥Y)ɐi9 ُyIŹljY)YY҉c)Yُ)ɖߙiϙX@vc깞<֞c9)yٟ֙eȟ*6[aJR) :Vat!V$% 1$:y*z٢ 0|9A!!2,#1111111111111111111111111111111111111111111111111111111111111111111111111111111111221111111111112211222222222222222222222212130404/5/6/6.7.|7.t8.l9.f9._:.Y;/S;/N<0I=0D>1>?38>36>45?46B56C57C67D78D89E9:F;/!M^H@|Ty {2dE14Grx J<5n [XUI֚mNfWvGbbPH9\*l2IdFb袣5:iRT^%z5EPn+jJl!!2,%! *7"B%J&S%\!$h$&v&))++--..////00111111111111111111111111111111222222222222222222222222222233334455668899;;<<>>??A}ACwCEqEGkGIeIL_LMUOOOQQQRYUR_XPeZOj]No_MtaKzbHbFcDcBd@d?e>g>h=j=ls@sCtEuHuJvNwQyUzX{]}a~fkpv{ÆĆƅDžȅɆɌʙϧӷT7%eA*D8~#[H`C3BHƏ92aIIJeA+E 3$ʈ.e̬G'N?E9QfPCw.PʢJhHZj0ޗ` JԄm(V`*G ]ۄUѪ֭BP…Q\͛aRh "ǧ6J\mKJHǵR:u]4t@V=Ó)U۶KrJ 5G٩ up9W tWoz#Й!!0,#11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122112222222222222326292<2A2F2J2O2T2yW2sZ2m\2f_3ab3\d3Wf3Rh3Nj4Jk4Fm4Cn4?k4>p??pAApBBoDDoFFnIInKKmNNmQQmTTlXXl[[l__lddlhhlrmhwoelUugyk}pv~»ļżƽǽȽɾʾ̾ͽνϽaH*\ȰÇ#JH་3jȑŎ CjHɓ(S& ˁ"clI͛$_ Cύ8 gK?^$ʴӉFU"UիXaI5i֯`FM_תaӪE9@geKWbۓ,F(V8ɭK0»&o#F\r"Sg”s^wΟS MM-%4gse-_ e6dȝu8ؙC8C3J7H !mX*  9`篫O)9 zч}߂n-lF f10q[F vCQހ_,A"n-oEHbx!5L:)D>~7df6 PՒAVWPMycL Xe>AAFqFK^KPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~ôȲ̰Яԭث۪ߨ H(\ȰÇ BHѡĊ'^ȑƎ?(rdŒ&5K%K+_Y7ÑIΜ;3B`fˆf~Jk?xtaOD r($=* vUlj-;1)ض ̙w)VWfߗYN9daMzLX!ǐ!!2, *5@J U "^"$h$&p&'y'((**++,,--....////000011111111111111111111222222222222222222223333334444556666778899;;<<>>??A}ACwCEqEGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~e!!2, *5@J U "^"$h$&p&'y'((**++,,--....////000011111111111111111111222222222222222222223333334444556666778899;;<<>>??A}ACwCEqEGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~e!!2,e(1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111222222222222222222222222222222222222333344556688::==@@DwDCcCBWCANC@EC>=HCAFGEIKJLPOQWWWXXXYYYWZ^[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyyyz{{{|v}u}x He(\ȰÇ#Jŋ)jq#Ə;)Ɍ$S|x0al&ə'mΟMY(HHYѤP+.%jcԨB>4kӪ&*éU@fh6!ڟtu-܃r9Eifܹu= RjKPL3踦W[+G!5K<EԲ)6u& ]y6C)jnس.~2y}Ԇ˘:쓑6le׭YkѧOl8^ }\CM2RǗwR}6F N(Q=#E)LHЅ(Da1R "HbSQ,H-BbSR(R8̊"Y 3DvddpH>Zˤd!!2,M01111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111222222222222222222222222222222/0,/).'-%,#~+"r+!g+ \*R+H+?,7,1-(++*.5(0?'1H)2P*3W,3]-4c/5h06l27o39r5:7:v9=x;?y>AyBDzEH{JL|PP}VVyYYv\\r``mddiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~eH)\ȰÇ"Hqbċ1VQἏ CI<SZ6OK')#M1ocΞYs(EFMz)ӂKt*U`Ԫ5bx*ժ]~اee6ڤm5wܡuޞ}uix1p*Ȓ)[ƩPrf :#A̞Ak)F`kS]@۰;{Mܸ٭oO'>xKGK7ysg&aٓ){x,c w|OLǛ`m8W<9Oc΅b؛~/M!?(b> Th҆&8|Ȱ@h9TɎetQ` 5Nc8:A G&y8RA"CL$6.3r)/E3d*7@! OYy x>f2|҉ Ǖ}rM5v&ʔf:Z 5IjOtt!!2,R01111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111222222222222222222222222222222222222333344556646362x61h7.P5+A4(83'12&,2'(3(*4),9,0=04@8;FADLHINMNRSTV\\\]]]___aabcceeegffjhhliimjkoklqlmrmmsnnunovopvopwpqxpqxqqyqryqrzrrzrszrs{rs{ss{st{st|tu|tu|uv|vv}vw}wx~xx~yyz{{|}}~ H [ȰÇ#:LHbE3fȱBIɓ˗0cR͛2S['NS@H]4NM.QCbiVZ*ǠeVfض/…v.Kv[ֵ7s W]m EV1\e,VrZ_-żUXX=2)JZFVT,SRJ*ֹ:{4TsMl_gy:K4mBrѲH^wtvM,`fw|5hUkx}>AADwDGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~f2 re8*\(C >1Cfcň cȏ%vl2J+])sf˚kܨ%M{d'ɟ%K$Ц;oj,QOUo\H1hʮV9nU!!2,{)11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122112222222222222222222222222222222222229/?,@'@"@u@f?Y>N>D=;=4=/>*>(@&A'C)E+H-K1P5"T9'X>-^E4cL/iÅ_Y`~Fi@YH!AU[o~qaVddhV El*>TE[L!)hf8TH I ;2dtDh$fSjWW"PF(k+I#iqIDHRl[vEX_l!!2,J!#%(,0001 1 2!2!3 "3 "3!#4"%5#'5#)6$+6'I6+|5/312121212121212121212121212121212121212121111112222222222222222222222222222222222334455667799;;>?@zCCnFEgHFaKH[MIWOKRQMNSNNSNOTPPUQQURSVTTWVVXXXY[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~e \*\:/E(VqF = rG#Ir@'<9&;2&9-%7(%6$$4 $2#1#0#/"."."."-"."."/"0#1#3$5%7&:'=(@*C,F".J'2L,7O1;R5?T9CW>FZBJ\GObNSgUYgY\h^ajdflllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~@*\ȰÇ#28Pŋ3jHƏ CD8dɑ(S|x˕0cD&8sfiSϟ vJǎ*Y)ťPat:4UT^1kU`9f Kײh!՚§غ+ݻB˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μУKNسkνwJVbF^\i@!!#,qCF~mZI;+"  !(++/.0111111121212121212121212$9EOVcq} !F_aa]YQ?&iU9"!+H qe"eH/<@/2>--=((8%%9""6 /)&"     &.7 = DKRW]ckpv}   $:W} 3vJiS^TXQRMMHHCC>>::665555998877665555443344556666442277z44r11j//c--^11X44S99R<|7 JѣH*]ʴӧPJͅ;Kik=ŠKٳhӪ]˶۷pʝK]^ڳ5@,箰È+^̸ǐ#KL˘3k,+>~8L^RfǺװc˞M۸sͻVpX{8\vINسkνOY3ꟴkFZjs;°VkȚ,B몱^+ek'&.k^{-ߺުmC;т"h=j;KW<6l` _|1$,K"3Lb#Ro8r3$9, 2L#Ish$$r4H,+OEot_Mh-jpǽp\2JAS D߀sS $NL#Tӷ0׌m86O8^Gθgˍ6ۚw9?o:$0}tׅÎ+_.^;M[$ʠoۢoI:1/= 4}8ԊS v4C{X\Wgrǧ~1~;rƥ`?ߵ C %Z p`̰E̠7z ⇤y$ gHCG2!g logȍ!GLC $=uRXD" . Ylh(kObs*(G8x̣>#2c=NF(C0p:Б6 ̤&7Nz (GIR1D_3A=C6V"̥.w^2W`TRIcjG>LIvr4IjZ̦6nz&)sjGJ<p9ji :̧>of39ur)E=!w8ȄyZͨF7jыbs (zKiag:h WЅ6%њ8ͩNwӞ@ NIHe$LհdC mh;晎(ńVծz` XJֲhM+W=*ASgI%%% ЩX(CaV2:`KMb:ul&KYX7Ȭf_zC1=jHwBuhh_ρֺlgKͭnw޾A p Ux+jWlЍtKZͮvzF~AIz+驩+}rù>J_xG8 ot܆ m\ֈp5&I}$/9ի~ru/*%Tlp?}ncx+gM☣4scQϻF5~Ot3==4JN Rl3{^6rDF`'*4%=w_Z49o]ޤ.rmtV{{◿|x< {X=~ur08ߋKN0K {;7m{7.|E7t|xxt`ZW)W>}u6~0v}6`fr`m&v)w'wgnfx{Hxz k<؃>?(p0 8}W}(~AWq\{6qv`"8~fG{Fw{w{'wojSr(]@x@(D'ypIL}NXz ezTxkVrܠvkm]h`sWnvbbn{]@DjlE{ϫ\kN *}bSU˻0 =l\- N ޠ \֔]ٕmm{ /Lױ֜zRTӻW]k M VpV ސ pd=]u@=]tٚDܚmxmm˨= ڃMذ۲ ۮ@` m=ȭܙܪܟ ݅ԳL ׍ݭڅސPNP޷`G=0~N-فo'ݣM}-ؖ|~đ0/N ~G=]y]&~ݪ-*Y2>VpvZ<>`>B~r}"IK)> ]-^S>Pۼ[]B>NcD>F~hOl.n}ɯ} 难^S MʰI}^Peޯ]p븞A<锾n|>J` 0bS8ݎҺi^d =Ľ.^O.ƽ .pn>M= s{}Mk?N&V?,>ZL~m< #%o>tJ0/>H\`L!?A/fK`a d_fhjL@Uo x XA;b_f(npy ~ __W z zmpȟɯ ؟?I%P_g/?_/ӟկORO|ћ'/rā3]ĘQ_^LDK\-qEKZ5mYKN=}SPETҤ<UTؼ} 79xͣw>FEVZmݾW\e DC+R8Ǐ!}K1ʓ+W|9SrN6^,fL=ChҥKWukׯaǖڵ,x0†#|pG R8c]-sINrMխ_Ǟ(gF?{mZiXr Vl>m_[~…EOƘk袛&dA7鮻S kϬ>1Dk|h??p9 G%-?MR?,,PD_eQF!5RI+ŕK~6XaT;;,5QO2U$0CKYk\V]^Ar9dAdOßVfe]VTd9S}v#z}7ێQFi_f嘏]fgYyݙK{}E;lYF;mfK~#n{iuE﹪7K,glGf<m馼n֛a7 "VyNG}lgl_ gv7r/w*\8Ԇ9'~-1N[omps]3xG|Jxm}z鍮ٱ~CiMZՊE@&}_72UA5ArQ (m D!p` /H97asAs#GuQ+TE[غO|1f8Њ:|9 g'4b$qkbոF6~"QbܪxE: [,^ H1dxFѐt7̱V#X?_|,4INvғ&HA"Ҕ<"F>߀إLҖ (W!$E09Lb Df2Lf/f49i2SKnr%/{_D'(NvsϤfAoH*Z4ӠtgBLxӡ/g=DD¢hF5zP£'8G)NT 'Ru.liLe:S7iNuӈJ]UF:T~!?M*SO}*M:UV5hAVUr>UE:VZԨ gRYғ©P%f(:WծVk^ծ_kXV¾=Yϑmm[LVֲklf5Yꕪ`AhE;ZҒ]%QeUl+B*RR')tk Zַulp;\nEniO= }-bcTmnM[vox׼E/z\(9хbX.խծw]5׿+^]/{ݥZY ptVLůvKBqE?Tb.NC8.ũb톅L "yG>\Gd&F1q*WWre 176pl [׾1"ɣ`rd:! ws1h3#MIr9kM{zԿuMmTy³|Ȧykfskm[9%u lnZæM%|ldW%e6-kiO&񵱭mz-qBՉNv}Оk ox%zkx5{t)e[uvpw3<yPqs6;Ob7M_t27\2:ikLWzֳs߆YmpLrhN3 oz!~w{ ,D3tAA d? C T954B#A#4CA()AB" 4; >% C";3\$ܿ%',*9Cp;1\324D%@3TCc@8B:2JKLDhNOEPC C{B{DDĈDɔH`ɖtɗ|ɋDFSȎH\$'4IKTɡJɣ&6a.(b* ذ ^ް!"N5f^7Z'c:;n+b-a;b0c92YmDVc&G~:c<ރKLdM/n@/a1dXUF^HY)[MMPnR~A6)*Vve8e9gfhi]fLdf Qavݽ8denfhfvdjgkȊ-6]yo`T6ZqVwV腦.p臆舖艦vy] qH_`Sh(Zrxd/Pfv闆阖陦隶i/el?f~infv꧆jijh ~`.jb>e&&6kjbgM볶kNkkjkA&{P\džȖɦʶ̮ll c nV>SjlPfv׆ؖ٦ڶnjն`(l~!.<>j.qq^popn~n&n g .چ@n^nfn'o&pa.>@no 6&oV'7GWgqOn7~pa ( V2p V.q0#G$W%g&w'()'e1 kԶ4W5g6w789:;Os-sՓ#2 EgFwGHIJKtJOpgtcB_^s8tDVwWXYZ[M_NSQAs_Gy(T?]gfwghijkveOud.goaoR/b6cvmWugvwwxywxvd?wP`ar/f>wt7GWgwxSWw@wA/'7Gyx}W_yqQwcp/y/wzwzgzWpGzӾ'7GWg{7z(Wg?2ȧʷ|̗|>'Ϗ!![,R * Jbu$$((++..1122334455555555555555556666666666666666666666666666666666666666666666666666666666666666666677777777777777777777777777777777777777777777777777888899;;==@@DDHHvMMiSS_WW[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~ H <!!W,O,Z/-1111111111111111111111112121212121212121212121212121222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222333344556699;;>>BBGGMMTT]]cchhllr{rwwwxxxyyyzzz{{{|||}}}~~~"Ε*\ȰaB#Jqŋ+bP#ǏA 9rǒOr%E[83eM2ofXPϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]6+W8:7i]w*koQD,pP@TLq!!>,),4E S _o+Cu^"d|&R*?.4121212121212121212121212121212121212121212121212121212121212121212121212121212122222222222222222222222222222222/3,5)7&9$:"<>AvCjE`GYHTJ OK JL FMCM BN CNDOEOEPFQHR!IT&KU+MV2PX:SZCW]HY_N\aT_c[cecghkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~􁠠*\Ȱ#Jqŋ.jqDž?$8rdȒOĸңʖaj|)!͚ q:L`M@ JQQD9 ?,P6G'NV}"4֪]pE,dH{-2Xʍt\e $\KȿSlWg"ZZx& Zͣ!! ,L*  ]'212121212121122222224A7f89::64334444444566666666668>.@?-AA1CB4FD5IG4JJ4LL9LN8PQ6RS:SU@VW>XZ@Z\A\]C_`>ab:bd;eh;hk?kmDlnJmoQklVjkZij[kk\mm]qr\st]vw`xy^{|\|~WRNNLIJGINTZ_elqv{{vtsx™ġǦ˭Ϋҵֺ݆~ysnkf`]]\YWSNKFA=:61,(! @*\ȰÇ#JHŋ3R!Ç"BIɓ(S\ɲ˗0cʜI͖!>tr@ JѣH*]ʴӧPJJ.><ׯ`ÊKٳhӪ]˶۷pE1# x˷߿Ǣy7È+^EŒL^ΠCƫ賟O^:fSÞMrbek6j?(s5H&y^8r\SzWݽ,+'$Tg#8lKG5>W'_C~axXVybU}WFxU B(Gr5$x`Mוߋl lX#x x_aνr2{ ?T9OGqDQ{@TwHe?B?FUx'y fQR&PǵBi򗨡giG wiQ񹘟GZ|f"O!Q)֚qZč0B> (g*t [t*mRV[S֪7 +ya-WX+Ւ.R[%yxW&HޤKj,-qT}9pw,FQc({*)dmQ"E2H"<@-DmH'>IU\7|r>wGXw`-dm[su$,l9AN/o'/|^P㏀G<9y"HF*񑐜a'I*R1YbE2PHJ8ֱzL@D!IEFT!%w)EKZZ9)FO4JL6#+]JB򐵬e.Ml0)L/rҘ@2Lf>єfGAZf#H~'97ILt"3l;Yxޑ=c)K}ҲM?_b AթL u*I͉RgFgJD(.8)3pjIt5&IjRRT;\|T4jsJժR>)1;)ԡoDiJT²OTCuʈ2.9N^*X(Vԏf'>AְlMl*:]=yPeV㲘ͬf7[ աem),!ʒHjWZźlrnx(9[zфhDEKאM.k_ɈtIN^vvD4% {Pj6-|K_Z#w_7e;h`:802&cX&ukkxwKs'N:Vb078&aKa cmљ!&;s49`;x>L9N3z6p0~Ɉ:Oγ)S,^סBZ.niF7Z9v+J_ȴ7NGMRY>WMCˎ iO͖;^ӥvjVկNYlj[ؾknx8Mq ~Fd3lh;Xζ~Ao{[Nx8>q8Gv7noz 0F>r(Ýp/<y̍Bc8;ܐ@ЁNrHSPeNuӼȺַs:9_l 1n'xӿ z׍l?cEϮ;'/=7WgFσHWC7+o|w?W^< :؁ғwU/Ͼ?h{߽I{> >_~|gG}ӧg}}c~vWmwr'|ys977W=?V~Gy t ؀p(hz8}"w({pHJG NPOv y X|0p8Ѕ5798;؃>@$XDVLrRXv{Ux ؅|؇8`xd={#XQ5؄vh`~Xy~8^XaXcXwB}8(v H|8xHW?̘膳8SQֈt 7Xȃfȁ،ꨎ8S嗀Xxxʈ8؎%6HWhHQ "9$$y'*8Y6yّ<ٓ>꺰ڰ G$JjI; P: AڮˊHЮ[D[ٱ4۱ )@:<۳@$ˬ)+([Fˮ+;D-`pR;T[V{R۫`\۵^`۵>;f{hC F۶GIDN{ z x۷P [{i˸ qCʴu{۹{;[𸨛Қh;<[[{+`Ѫ[{"CK ;{k k ˻;[{蛾+꛾ɫ{C.[{[ٛ˽K  [ ;#[C  00l.\ 2:P9<>>="=D Ҍ1( LNPO0T]V}S]N:-C b=A=ЪPh}lnXr=VݮW_Cd@m~}h-Ҍ ]؆}؈mN،]tؐ۰y=C|ׁ-ا؞٠ؑ=O}ڨڦ= mٗ-֙m֛# ۺۼۍ X]}ܫݮ2?=B=] ȝڽz D ]}]ޛ =+՗" M^~.C j` ݩ">~*R.02.6~86y=֙ @B>D^CJ Q0NPR.CpXZ\F>&.d.Spe11npa.}v~xzhi0t >^~舞>~阞nBn >^NꎐN^S@^~븞NBN>쨮ꮞЮB^p؞ھܾʮ^~>,N ~N ~Ȟ@U?_+T >o  B_& (*?^U?6 ?)4 <>@=F/L?4?8R:BB/ZYOE`JPfhjoSnWr_'v[ ^_+k?ortoB?_~oO?__B??_OB~ğȟʿX?X#`ߏ_O/B^/oH`", DPB 2QD-^ĘQF=nRȐLDRJ'hL5mta=}GEE"ɑ->]iHTU^:UN]~͢TXe̚VZm \uśW/ٶRX_B FXaY䌃/ƜYfΉ~EhʥMKZj֭]nYفlƝ[@}\pŵF|,l͝=:omǞ]qݽ|޹t򴭟]zݿ(^߿^0@D0AdA'B /@ C#DG$DM0EWpC#FgFowGY2H_$DF{I'2'"LJ-K/I.$L3D3M5DK7#N9N;3L=dO?MA³PC#QEeQE4RI'PK"SM7SN)GG%Q@5UT)eUW+4V.G&dO. Wfe_9f[:n9gwg:g&h_fiy>:jNާ}#kk;l&lVlz߆;n{n0;oomn^nGyiw矇>畧zOP{?|{GzA%}^ 秿~?8>ЀD`@A P| `%8A1M4AvЃaE8BЄwBЅ/a [B,І7au8b ?b8D"шGDbD&6=8E*VъW$"E.J _c8F2ьgDcE"эoc8G:/cF3яd 9HBҐ~H5ґd$!HIҒd&5@RrCe(0JRҔDe*UJVғje,e9KZҖ(_ \җf0IK^ Әh@f2Lf6әτf4Lbjhf6Mnv3$79NrSi@g:tӝg<9OzӞg>h@O}j@hBP6ԡCIVԢhF5QN4TiHE:R2 'EiJUR/IW:ӕԦEbQrzSjH?jP*Ԟj$ !!,>22221111112211111111111111112211111111111111221111111111111111221111111111111111112211111111111122112222222222222222222222222222222222222222334455667799<DFFPQQXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~~vohaZTND;3+&   /@KXgpzфΏ˚ȦƲeH*$‡#JѰċ!VhPGdpI"IDh+cli̛ *Sf̈́<{dEtaP\ʴH*iTRiʵVW#*mJv)ذZ˶[gbSTxx޽M <`H+$XJƄ?,yeʖ# !!,L*{1212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121205,:(@%D#uG gJ^KWKOGIEBAIIRT]`beehgjgkhkhlhlhlimimimjnjnknknkokokokololplpmpmpmpmpmpmpmqmqmqmqnrnrnrnrnrnrnrnrosososososososptptptptptptptptptptptptptptptptptptptptptptptptptptptptptptptptptpupupupupupupvpwpyp{p~ppppppqs#u'y.~37:=:7544579;?CIOXgvņŐµɾοѼԻ׺ڻۼ2奠*\ȰÇ#JHŋ3jh 1jIɓ(S\ɲ˗0cʜI͛0ՌuJ@ JѣH*]ʴӧPJJXj,ʵׯ`ÊKٳhӪ]˶۷pZ 5ݻx˷߰DKÈ S1r#KLkƕB̹g6yӨ-cN-4װ) 5۸&;(WqumZWW)uo%.9h{͑=VsZք}v}{u}:{]fq(ʔ7EWa9% ~  r%W]]0P6 W(x܋mp#~^Ѵ^uzՑ}9(%n=.pH9YzE܃3bLCΔhXߐi6B"-t~%{yEݙinTGT+AZқPNOt7TAUPp(7SըNEheqT+Y!]5@9륱룽j*jԩ塆F(-(Px&?9mPm֒cƖU>aFk +k.a+o 75p_y!8e9wK5^yq1Jjr-2J5r^%4+s<-DmH'4?-tI5u]yxR?Z7`-dmh5\7=H 5u\UZw ߀.n'}ݵ:Chsc7i.w ݵp;hlcp_/o;zJ ZbA+w/oӭ;}Zxd#SAE HL?iu^X &'6z GH(L W0 gH8̡w@ H"HL&:PH*ZX̢.z` H2hL6pH:x̣> IBL"F:򑐌$'IJZ̤&7Nz (GIRL*WV򕰌,g9Gd -w\z2ܥ/9LaS13yc|23YjZ 41nzSۼ0Iq3H:ωNvvR<yn>~ @JЂ8BC]0!."Jъ$-2юP HGJҒt8J .c/q{t1]4%( FNU HPȍXjTCdjUpUUu7*F]p(YøS5k.1ypC !!,>11111111112211111111111111112211111111111111221111111111111111221111111111111111112211111111111122112222222222222222222222222222222222222222334455667799<]^8ac3dg/gj+il(kn&lp#mq!nrosptptptptptptptptptptptptptptptptptptptquptquqtqtqtqvqwqvquququququququququququ!qu&qu*qu.qu2qu6qu:qu>ruCrvItwPuxZx{g{~q~|}~H?(\ȰÇ#JHŅ3j4xǏ CbH2ȓ(S~,ɒʗ0c~hIS̛8Wlψ;y:4(KH{-̥$JU uԫ"K1.X^$kׯLŪH#;nӮ&\cݫ%RWWT X$5cmM rsK62Z+mԪ]mRvXmRT޽};PkGGp͝']:QֳkνüOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TVim%nyY9a١zᡝz!!2, *5@J U "^"$h$&p&'y'((**++,,--....////000011111111111111111111222222222222222222223333334444556666778899;;<<>>??A}ACwCEqEGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~e!!0,RO111111111111111111111111111122111111111111112211111111111111112211111111111111111122111111111111221122222222222222222222/1-0+/).'-%-#,"x, p+h+`*Y*Q*J*C*=*8*3+-+(,#-!. . /!/!0 "0!$1#%2$&4&(5)+7+-9.0;13=46@89C=>GABKEFNIJRLQWOY]Q`cSfhTlmRmnPnoNnpLoqKprJqsIqsIrtIrtIsuJsuKsvLtvNuwNvxNwyNxzNy|O{}P|Q~RTUWUTSRRRRRSUVX[^adimrx~H*\Ȱ#J!ŋ3G?rɌ%Or˅-_4sMl6s"ĩ@i>} ѢGs:KjӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘-+ cKn n| 9 c7 Nȓ+_μУKNسkνâOӫ_Ͼ˟PJRo+ŝ~ZRxgi99%|S!Y=l(S<ň%؎9ŒQV:s88cR%>]Y}e"MA5}3xV E[p1!!8, !J 9s!&),.111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222333344557799;;>>AAFqFK^KPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~³ôóıįŮŭƬƬǬǭǭǭȮȰɳʶ˹˼˾AD0† *D^ĘQƅ?r(r$Ē&Lq%IKv!3Ë6ip"Ϟ JѣH*]ʴӧPJJիXjE/Dh̢U/гm@YiPh?irU-4(Klv=\c37/@;vn B)W3wӅ.(PKWnuAKPf>7HX*ʽl۠iHG@4Ͽm2P+֞Uru<3[:-h _y r!!,qCF*2222111111221111111111121212+E%Y iwsrwqyqzqzqzqzqzpzpypwpvpupupuptptptptptptptptptososososososososnrnrnrnrnrnrnrnrnrnrnrnrosospu!rw$sz)v~.z96788887766557].9q܂ Nȓ+_μУKNȕ6!hLӫ_Ͼ˟OϿGڌSn};h#AF(VhfaAA!6?8,0(IG8"΀֤-">oǸ.5r3Bܼso'7G/s;S/g}k_Oe/WRg[Gʻ E)sH ZP| \ [tf*k]&h(L W0 gHy`MN"B6L&H\! ri>`x$ P H2hL6 Yk"%1)W`=⁠nh78ao@BL"F:򑐌$'F8ohsp4<81 0At$WVtexIe BxCEqG7 1lԂ2f:Ќ4IjZ&3M.xӛ`8ٟr!D Dyo@̧>~ @JЂ܆Bq:vFtw“H7! HGJҒ(MJWҖ*F7q7NwSF;͵,O3P:PFT:U,TXj6ծn` XzhMY ֶn-\J׹&xͫ^zᯀ `KoT@%]bX4.z="5LV@JR8 jVJڱVjMjֶ+_ֶ:ґ4&.YKVkATiYv$u,T8Ȫ6HӞvEkv{-׽sRT)S[Yy:WL uYfWww-zZUsܩ[Q/zY#To}L'N0W0]'L EaPzHn@xK1WiLVǯձ]y ArA$VLnnR)Vv,Z-oaV1f>3u+ m-/\?`j<~{Yāh @VЪ%4\ -[2'Z9"?ҹ*O'cK]G38z |՗I '9)+cx[6ٔNI:TY#9&\ٕ^G"sOy3)jVٖn)X_9s8.Y0O9 ~)kI oy)qt٘\iԒJLŗ599yyZ阍 Dgi1əyٓٛIYIKIߐ) 9Yiɑ)‰Y`yɗЉY9Y)ɇb pdigyPzi ᩟[E8Cdɔ4Pڡɠ :i})jOzO2Z)8j<* @B:C*/ 3:6ԙR=ZVZ?JZJFHʢKOM:Pjyhji[Х&L:x elڧ~  Zz*ɜax :Zzʣکh*Gب/ ڪꩰ:ZZyЫcPzzZ::Jի**:ZJɚ꺮ڮ :zI 3:[jڶO;k !˰7(:.+2k+6+$;i&T*۳@k0D;3{2[7)ZV{XF~е^~2d[f+L봙R;Zr;q vk}`f۷~ jl;GnJu{z˷[۷i;6[Ut> ;[{ ۺ#K(ʒZeȢ*‹[{; k˹:;[PȻkMʻֻ+ً}K ЫA۾k{[@ۿ{1  L<$\&|<[{.L2 |>"88+\/L{B3\ĎPs:L<̺lB@-]/.1 3Mӛ|N9: T]Օ xonlԎO=d] - R-VW[G-` b] M z{= ~~}ڜ;ֆMnM ؎؏=|]ٖ}٘ ؀-ٞ٠ڢ=pئ|ڪ M-ٲ=}}֤ۺ٪۾۬yJ,ȴܙmÀۻݣ} ]ݗۘڽ߽ؐ=ސӒ̝|ޡmՍ]}F[}ȝ ߠ-]=ze- ^M0N):j>ۀ<=ٖB&^^p /1.eF{\^C>F>~p j p.=2_~x`|n dn/ k ݐ 芾 Nbz^閮}^ ^ꦎ`.0~闞鸞b0>슞~"볮 P \ܞ~  >Ӟnמ>€p n~پ_ JN *@b6O" D.0*2?~P9!_EX,oHjN?doQjlnYr?pxzI*P ?m/ߞOn{_{?On)_?_Oo)o_֏^%+L_۟/)_ѯ)O>Ջ;uΝD^,^ĘF=~RO%Mܔr'-]S̙ęSS]ƒ /RM>UTU^ >X1؋#͞E;Z4ݾN;{ :4^ѣIX rU!>#[ʕقŒ9s~>tPDHXj֭h=0Wƽ$mn˙5s3hI[Яk͝;Ms_Iv^x͇NyMU|M0@C0A}KO=soS> /o@?CNF$DODWdQ CB ođ) 㐱RLE#tFd091 wLjK",I/E!,MBOJ5r2NL; %O=3O1# ѴqMC]kS?dt;:3RI'RK/M7NCGm-Q+lTGQVE5VYgV[kS]=I0Si2U-W5Ue-Yg%]W'J3XmMcDDh%\sZ]BWn;vs7_}MWO,Z(%yw_.w8b'_7eLw :äXTede8eW~⋫XPŒewgw&%h&hIqGg>j:kwiQi&lF;mVkBcYmK;ootW'~}ԧ}gy矇>z}⯯]z?|u{ i?%~秿~?7C}[4ЀD``%8A Vp'Q!,8BЄ'Da1W_<B*07aufp1\v8D"шG! BQ"G *VъWbE.vы_{ؿ>k~¸F6эoc8Fь8zG>Qd 9HBس1>62d$%9IJVҒC&5INr2#KҔD IVd7Җe.u Uҗ|%,Yl,*Lf6әτf49Mj 0C̮r?g89NrӜt?Nvӝ̦6K%n g> ~ӟh@:P}g<n*ě!hD%:QVԢhFiPv ]PiԤ'EiJUZQz `¦7iNuSԧ?jP:T w@jRԥBh!T\L3S8EjVUvGejXzt/ T9RX^k\:WUwY*3uWrUְ:uEbX6ֱcװ5/C)̐ynlhE;ZҖִEmj;Y6'32f9;ne+t[ַnp;\׸EqYڤB+jfWΦ!Mnv]v׻].sD7>mUi׽ov\^C}j 2٩p't⧿E%kf-;" "GFrd&7Or eߵ' f7gUHRt=hBЇFthFY/ c=[!e]C4iNwӟuE=jRԧF1Mx4`Y$!\uSk^׿uYVcvL_A=mjWvmncڗ=wd+nvw=oz7-Wú:7d}?Gxo..5qwyE>r|&n )>1Exe>s7yus紮3ryҕt73z%>qzֵuw_{>]No{u }iʘٹ>=??C+X; dKAEܿF I,ĩD DIĨDħJ CDDBPR\ W>V?T7`S4D1\@Y2ZDU ?`Ead d`læh8J8V5[3f3o5w:|HZZ_^agqֺÿW+]e˞#J( )jH0Ə 7vtqȐ)C)PB$dr&͛8sɳRzI(DF))4fҧPJ%j񢯗CVx0NSEIJf: ;6۷p%4ݣs=ݿ HP"1?&Pfށ.4qˍ >LYBYXRF;9/QC4/QV&p=C4bOZ쇡Y}tҧSLę~Cڷs<{8gzgџyi p9rF}Ť^]fޅR_/q\K^Je]^!uequI-ZEUWxqe\y(o HE-@-Ws5&ɛ^UUFH~c3V{vyz0bD=zdADj9fZ'%FUb^vfɜ.BFid9b1faaICȉ=DfQJʌd*f}WIJl S*D{Jx*J cCj Ǭ\CSZi))qƬbǠ=6)*Lf5j{a@*\gʊ0rj,Ei"T[#?<%Yy{gI衷rlZu3ƣsag2l]Zq{ηkZPe?ֺhHGB6Z%`(ي{E7)wJz40L׈җ3O@Ё.r?4-WeN$#5qnfդaзK>yt/YSqmsk1>AWc,"2_1wB3a|SkߗhU\oX@<\1wR Ʀ)\Axp_)N_}EQiy^~cR\a?}׿ ח(C Ƽ(_)V^-~ۛ4>nԣ16 tz7~1&xVvrXxWgWxŁ"8*'u96z'~ww7x}~Wx7 x}8>{HB8DXFPЄ䰄G8fn{rcH}5}3;~e}?^T؆n"@ PvXO(pHVXhcWcw'c z<(jXCdž} u @ ؀ 0 P hxhc}h]1vWqw8~ȋ8 x( Ј ް8's}(7 W{Gqx8 x0 u x)Hzt'~3փ3H~7}َqPx)9&yFV"Wȑ Hˇ:>6Tt0 URr ѨUz|ٗ~T`ediɎhF ~YWЕvyt Ӱ Й9Yyٚ G5ZyI Zy șʹٜ9Yyؙ9vĨ)y9x 9Yyٟ Vy?jL6oXY ␡ڡ ":$Z&z(*$ i`: چ <^@:I 0FzHJLڤNPR:TZVzX@ q[/F` ~`]9=?AʕѠ r:tZvzxz|ڧ~ U1 Ш:ZzکzEejl)ڪq hzZUiF:ZMVЌʌ *Qzj^@XIx) HiYPzZ v059: H JOZ9F: (9O{ wX X{* +9 Lܠ_i({$:rH B X;8鳳NIr IL{Z^K1\b_[^2hGhlkjp+m;v{Hz x۷~[r{b۷{IQ۸>;9;,q ѹ[1{{˺;Kkkۻ` Q‹śuëk ;J؋P{۽k૬{T拾Dꛬ*k8ے9ʿ(k\1Jk |< u <SqUL<¤@I(&|)8?20̒3|Q6<|:,=IJ(BLiA=< E,7L]k3[2 a,-Lhgƭ)m$ Ǜ(sLdkyR@PA<OaBL|܇~,iGKo9!DX,Dp8P,q:i9OK2M2#b$2޳E|Ԕ?ˍ$BohOQ0 "LP% G'X;m"IW1G̢ͫ7 42# L>"$5<1}+@Ԓ#Ɍk>qH@lC11?gA0CK 4u0j|%Z]\M|';4!،%${M͝tJ %BMGF=Ml2"LN=K NrKK@$O L-'1R3Qb\?ٟMmM] - эӽmm-ݽ 孁鍁ݾ}M=}-Z~ࣈ `^ N "^ؠu,.02>4^):<>@B>D> +JLNPR>FN XZ\^`b~ ?phjlnpd؀v~xz|~> P~舞芾裈*^^~0.DUrH>~ꨞN>wbNf縞뺾l^Q>ľNʾ̾؀^ޮe^b>^~.^n_o?O ?EN~Oc"/ &, 82?,8<B ?F^(L*P4o9ߞ6>CH"M'R?,OgXԮ\Nb?ehlp.t_oz~Cnd%_Q.c`?NɎ1>@LN̿O綏//ʏ@E_ןۯ @ b[PB >QD-&FF=~RHD2%-]SL5m4RIl|TPEEsJl>UTU^Ŋ "]~VXe*][mݾW\uM}X`… WhDƍ?v81$-_Ɯ#޴,o~ZLK{"EZꡥw6[lSŝ[nu\pq}35\r%OFt>\Yv5_9Zx/e^zyֆ_>ۼսwk#@.1cAH;&0$0CZ=?LC#Ĭ/E@_KDà;AwTB$0 /԰H#[D%I@VEZ1K-F/DGx$A2!eH73LI9=t2J;IJ=rK?LAi<32Pd;"߄t8礔:Ĵ@%9E1B4UNQW5{4RY7JoELw=S_=eP nRQTeV"V|5ZbZ҂5ۣt[P5ܱ>%\E6žmȔmUZy Z{U[}[ [75`.U7auvyIŘT 6\cVa}Vb7j/X_7c9dbG&Y]On6UneYa9ۙi}YPyٟVU'{N֥9Z?ԫFT뭥-7ұɶL[-n{з.S_#[ν→ \, /Qm"!|)7W\9AQ,t8MY;]v@q7ݣP቗K^yhoP[]Ϟ _/ѯWORߜG?~ɟÿLȻMK`z@8AE 2|7zH jFH^pRژ/ S@~9Lyh,@ HDѠ X&._PT]X9YQE"]XdiA_NŘ&&ODԸֵэba4G:Ƌx|PHZt $IJpTjH۝ $-GKKDʤ6ғe(HR摧lH*U9V&%jEU`ɥ.^\0i!2gLzL)(|4]DjIYw$M>vӛAf83Kr6МM4v:\6bԧOOg+&Ayx*ti=!щŨ.5ZMbӣ=JWFT=%eIP-KaRoT8NSE@=P?JTc5HR8:PTJVZ5X%Vo,z`ţXIVK5h]Z= p\IW?5x^W=`I26bX :dUI&Z%fYyŠh'IZej}ZlH[6nO[|EpH\7r\9yЅtH]Y7%v]yvŝxgH^7~ez^s|7H_7{~_pFH`8x曂_`9mGaY8u&/ayj ƚGb8r(f␹g0wGc8o8cd@>GGd9lHޘ9dDh SbtĤM~% Eł.2+' \./' \>{3{Hu>s8f2sgM36P䐰*?:99F;3ڕVH]j*F_ZueZ`|/该9ׂ\&kTEիఉ=X+[cŜ<[Xutu;hV6Hkmc|MRaՌ}|{hᶖeWc4myWAa8-0uOM_1Lx;7Mqqh[n~S(lSu TB+Bԉ,L (tB.Dvc3DC2c@Hy(BPCC,5L3\=Ó@dĔxD6LHD 5|Cy܇R¼N>Dt>CD!F>Âh:WTE{0kEEEND_laDP$E@bM TlDV`C_YPjHFYx`8 oFLArwmC4CV@CoFmFoG_wGsDGxdu?}yxtprdz{CPHtFFwAuCFkEȖtHGDDɎGHV H<ȓc5|4G{|ȉ4}DJ4uɇǙFb\>DJ4He5Z5X{؇VELLEHDLmEdd}=`U@-c YP4ٖё5ĒYDYUW YNYY,ZURgm0ZC\ڔ}Sb!]!%atVZMڦŧ]JY|Ye0٣M٥BcYY[4Ḅ9۟= ýu\Ju\][y[D\}TJ8aM\\P5UD9 ]m]}]%ϵ*UTZTLmY55^! ^!tݔDREU4uX)Fb6}⨥a/|>-cX,b`3aGf8F9> -FA>oa b E.leDE@Gⅿ.dd>H@L@MfNN FP>Q4幌J>EVtQvTY>NeR _^>_@av>X_6fEaf_v@beijLlknopq&r6sFtVufvvwxyz{|}~&6wۅ=C兆G4CDTKxE^kEhБF&\OV\SۗeX.9Oj2$TK}fFK5fjX:mX Ш^YǕ?\VʕL뱆Md&kմv&?@i˜.\fFd&6FVfvdžȖɦʶ&6FVfv׆ؖ٦ڶ&6FVfvnLL|8q `nKncngXoh~ƄhgLqm`_LXNfpp Lpn 7ooV> iop0qqNq6o"foqnq։lPhq۶q^p._orrpfrq%? &??so^X~ss@bP 1q:sr8(CDE'FwtrtA'ﴸtL?tNgƄfFOu./sV=noqۮHDR's0g0pbGq[Op$_sFrEu 4? 7[_/Wt^0pGsboKl=vlv#G6/opwZ?!OcO;q'q qt'rGvօX]axχ=gx_X8 YhGxu yLuߎCw3Guxegzy'GWg~>x~wxO`pmG Go}g8{mO{`@|QzKh ` -?x7ϟ}Yo?|orǷa5s_{p}6o{k`0yXoHpXI gr_'H~q@6ql~`0tiPggGo#||~7n}HgeÄo`}*\VB !Œ7r#Ȑ"G,i$ʒրjI,J|1a7fq!\ٲ%,rSFqƜ)ԨRRj*֬Zr8R1>,8Ъ">oɎ.޼zM:ؔiMx)2 T&NiB>2̚7sڴ"X3c1pC Ƶ6n})<ygO 3*XxҧSn)  mZWKFR-΋kF]ϊ֋0e^ HwXeME nI8!ZX8ȧ3ɥF e@"zX3 v!\~ p9ɷqete2 1*$MJ0NJ9%UZy%YJxZz%a9&J!!8,Dq111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111112211111111112122212222222222222222222222222222222222222233203.3,3*4)5x)6n)7d)9[+:M-=C/@A2EA6FB8HD;JG>MJCPNGTRMXWT]][cccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxvyvzwz|||}}}~~~·ĸŸǹȹɹʺ˺˺̻̻ͼͼͽͽξο! *\ȰÇ BHE3j(qǏ ;Q$ɓM\ˇ*_ʌ)%͚+o? q`AH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸b=K,c|3^?uҦEWMͺjw? ؤ^֦6=]cϙ{f{Ve1}oϻ?k~o~{ʪ'hz=?5W8!!.,@a11111111111111111111221111111111111111221111111111111122111111111111111122111111111111111111221111111111112221222222222222222222B,X&A&/%.#- -,|,u,m+f+_+X+R+K+F,A,:,3,.,* -&-$-" .$/$0&1'3)5,8/:1!<3$>6'@9+Cxc K,;Xhw| tdA+21212121122222222222222276JEfYu{d|whykyg}e~c`YTM{G{Ay9z3w+u!tvz ~Ȋˎӓי%ܟ-ݢ49?HKMD9(~cENm*ˆ;>FMW]eoy|K "Ihl`]f`XhaUndQreMrcItcCvb=}e8f5d+c!c_\ V xR pM lKjMjP hQ(eR0aR6]R=XPASL?NH=JE;D@9A<3C;-K>%Q?V>R:N7 G4C3@0<-7*4+3, /*!*&&#&!&$$ $         ( |. )?_Aclpr~՗Ķƴȳͳֶy޺vvzȂ̎ΗѤӮӷѼͽAH*\ȰÇ#JHC(3BȱǏ CI(S\ɲ˗0cʜI͛8sΟ7K JQ)Sگ)ЧPJJʞX}ZٔҔGÊKVɮ]Ƕ۷pʝKݻx˷_=K8ZN]̸c*ݧ˘3k̹ϠCMӝyrV5g}LmK%S, Nȓ+_μ5"zpb˾ͽwgY=<{ӫ_Ͼ˟OHg^ovw&xY7=D(Vhfv (j䡉$h!=S>)(dE<ԣ̎<@)DiH&L69dFJBBӢ>0H\$YeÌZtiii3hiC6ꃣ2je&F̕Y*vv<ʔ] *iq0*E[>* b )"hgҪkm^DmXS똨heڐ{e2kQl\ j.RB-u=ۢ-Ak«Gn{ Aًo7,Qk?FoA l=bo 7܆fQ/l hgR 3Y<͋Qߑ7-sb=+GĽO7v?Na~7 yu⨧ꬷrᲃύ&:BYX^ܓ7y>O:GzN뙻MȽH)w8 ȫowݼ?[B08B|\|8`"py .GiOGK]LAATAr |ܺ  s @79İ *q! ܡr3H*ZXby.z` #G6ypK4Jty aH0rx̣8F֕egL#H{HGWF:򑐌$')I^P̤&7I+kf̒ Q2BHd8V򕰌,IE-"}H$$@bL2f:Ќ4IH2uLt4\ijL:)GNG6I56Ŕ'2~ @JЂMBOd:R效EYyS-G!,SYHJҒ(5HGc6竲㵊2ꢓhĀqs@ PJԢHMRԣ6/=bLa)DQԦd&6K Y'P@ֲhMZֶp\ ԧSP e՚bOTZxc"BH˺:d'KZͬf7 Y%|PBeR} Ye`3Zw`2d pKMr *Tt㸽ͮv]*y]Rj<r|Kͯ~_#it@:T;xD,SZFfz{ GL(NW|b? x~`19ґ 8w<rv*<7&U눲L*XƲ7-w_憘̍mfֆ6y p̄:ۙ Mȳ'R)Pŋ vѐ1N{z8 Y{U>`g],ۺ]s\f4vs61bu泲 hBNivHڑ;x7kMr{6A oz^뵭Wl,˺4l;+{vvMox~7mw/Sp9 bF3P/{9'{#ua s<3 ԧx8ɱmU&,D+_I7[ި&fo;\w<:5}s ~+}Mӡ.;^.uѱ c8NXب\f}N6mޱ{ާo=;O^Ksg; L?ܡq=8Џ1?ӿ=h_oU^ֳ}moGx}c7LAlf˼@ȌȎnp7JVwLy]`ÅlȬȑ,ɢ%Z,Plr|XZl^<ʂlʧʩ,D̐&<ɵv ۸ ,ü|lL ,$L쿷,ڼ\͝B>"pHJ.1>T4^yf>?>bNEK~gN^;, n QUNnPv~W^ܽ9d^~9P>;芾E~.jso.~X..3>f35pʀ>~9:^N6Ȟ~ߤ^꧎^3P؞50^?뷾^;žNŎ5Ǯ>~~nnڎNގn>~~4oN_~Ӿ__o 3o8o<.N&902?RϪ :\=p@1DF_LQ&N*T/4Vo~`b??~$j/o^ _?y6{/od_f$oo0[?~מݞJ?M/Os;_//ON5˿ΟopƐ׏B@ DPB Ob|Ń]tRH%MR% -]SL5ms 4jZPE@TiMUjU*š5?c]~ 9w}\uśW^}[1jb!U>^R2cجgOA=ThsLE uV֬vlٳik+}\pOx1Ǝ]:)W|3'g6::%z|kZ_džolv:hղu_q0@0k:a)̸' OSCi/mlOE_140#A{G"B ð( B$I%?dDȢpoEK/,lL9vD322;!H;N%l'26-PCE71 [4&RK'uO5;=Z$`UW_}O͒Do5W] ZK%XKmtӠBfCv%KT]dUXUVT]%\{%`3]wM3Nr^CUiK=+lՖ[JA37aF]'b/x{^}v=EYՁ.pYd8fga=4cw-c? Yxn8c_Y6Ё=AT`5A/_G_E=|U P` e( ςaqk?_#؈wPB&6..\ 8ІD8v1<48D2 F D61!P8C+ְ[#!G/b=WFB@d"EQxn$$7G$&X bYc(E9JQQI@e!UJV񐌄%#)H֒3Knw$(I9aDf+L"τf49Қy>tӗd0ALrT@g:c2Sg<iֳԼf>U)nh NqDBӹЅӡDD!JyVԢ=5L|ӣg%wP'EiJQjN4eBe*ShN/S?jP*Ԏ~Ԩ iGZҀԩ+DZ:U`n{iVkЛ4iX1:TGEܒ@OJ<wͪVή"}D`+VYӺXϭmk\:Nw,^:ӽ򵯨+`;ZҖִTZֶellXֶmn Y@PVef3Yvmh!qZ6.ta+[ꒋ-n]v/Dx+\=MS綷@@|;_w/[[?׿nEX-yk܇p`[_ W0]qE<F0f\Ϊ{7񅵰c-pǷ0<NW^I1n'rd%Mn#a)or3'/r;/+>zk7y;\#w?r @zҕOKh>uk8yys.zO3Lw:^Oo%>s^žwP' i;x7D#ow|':5y}g/E/G=&$LP:y}u݇~HzӝǗOy{嵇~7{W?׏|G;?y?ɿ[#D\@˿ >M @N ? 7T@4AsAM؄AA!$",TAc &tB (܄*,-.B-,1, 434B$LBK't7A)B+:/??$A0CDDLD5\xkC8|C9D9JB=D< M@O2Q$R4ESdFG8WDKEND/[EA ]2_`FaLEU|5VCXTFEKE-h^jlmFn,Fc4d\qfDT@tTGidG?wG2 z{o=KrGf4Tǁ$ȁlGRDŽTPG|tH|}ܲ~GXłȌHt<ȏH24$ɒ4ɓDɔTɕ4|ȗȊ:ȜIuɞIʠJtItHItʧLGJʪʕ,JG$1\X+1yPFT˵$ȩtKʸˬzDJįd˽˷ˏ4DLļKLTHʴT˷̡|LLLdJdtׄؔMLVV M4LZDLU`tNVNVNM$DTLTtOOTL,#χ3d%mDtބO1 UQdNXPe O~4@T]S85T89:;I%A XLMNB=PDUHbF GQܤVuUWXYZ)\]UR-U7"}({w;UUeefugOijVk_e`b=VMVq%esEtUueWtwxx^{|W|Wu)VK֊ Vx02IrUgm׆u؇my؉Y}X}W(O؀ճŇ=XXؔUٕ]يuٗYkkVe!%_aٟٞUטڡ%Z.@ڤUڥ]ڛYYo-ڪ]עڬZڮگZZ/0۳E۴M[}XVMZZۼ۽۰ۿ[ 5\[/Pem\y(Ol{[ۑ]5EUUׅؕ]ٝvhX%[Eee]^םڽ]]/ߍۊM%-]EU^u_0ڈېR[[[&6FVƅv0 /n]vF6 fvn\` a  a-w0V%f&v')*,vv !VMoUb(~`+V5f5օ789:;c,bb/Q1._FbDVEfFvd;ޅHIJKd= &.A^ތ@GVe9VvWXHZ[\M?f PQ-Bv\T\ffvghv暥jklW^crb=a&fƊmVufvvwien ?^%qNr6g͍؀&6FVhr+g}>*~>fb%&6FVh۠߃ e!hZ"-,Ȃ-&6qfDžꨖꩦꪶ/rpipʙ6N\MFf^kn戧꺶뻮-߈0kir>VldvdžȖ&۵lrlNrg%z[v_þFlņؖ٦ڶۦNvmnU[kAy(mӦiԾh`vm~mܶn.xn.&6..(Fю s`}gTms+np7poVgpNZs^nN}'+{@WOw?op OՏj|Z ?fs r.!'"qж$Wr%oqwg(sq qq:qOm01'273&5'r789)Oq,r-l/t4A't4p6GtsEgFssq~=s*M@/O0?tD_sEwSGuFtkCxgIodOf`V]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrquyqyp|nlkigeca`_^^]]]]^^^^__`abccddeeeeeeeeeefffgjnsx膽S8*\ȰÇ#JHŋ3jȱEa˗0cʜI͛8sɳϟ@ed)俓# CҞSyIJիXjʵׯ`ÊKٳX:2ѤLAڃ.˷߿ LÈ+^̸vSd|kN8p}MӨS^ͺװc˞M۸G\^wk+dz͉ֆmУKNسkνo|$Amf̘)ۯ(h& 6F(L~H36ଳ=d=̇}.0(4h8<@)4.(!6c{(O`M+ɖ\v`)dihlp9)@:e c;h#M+ \&袌6裐F*餔6ĥK@ivJCҊ4ژ[K1\͜2*무ZJR:)0AY7(3ʡ6F论*-N4 @$L/\k(nRLNϟ`3nͺO8/G,BJ8d;LÌ.Ol'ʫC.L; $(K(sO۲˹(#3;u<-<,ЪnX-F3L; 5dЉvv\uIK7fmwV/+Ou_QmቪHn'mR=|31t#+9]1t[QPn9sǞ㷐n:_#.^:O^|ٲS=;Won7K'ׇ/~{?G[~ăo_?LÍ4`E%GJ r^6 hC-_d$&I; ^hЃ(4 Y4v0D gxOh![8 ʐ@b6PרF0\ :zXDC%O̢ +@2r`@䑎p$1HG5A[V$U `yt'U< s$QƄPTSH+P(D  * 1V򕰌,gIZ̥.obD)1JE,h#G@"МD%*щjfT;iOc59Id:ɊXHg<$%IÛ5H81jdp+jAZ B)ІNB  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddmh_wlZtO|B4Œ(ϑٕ  "-8HZڴpշϻʿ¸K H0SI"' !!2,>811111111111111111111111111111111111111111111111111111111111111111111111111111111112211111111111122112222222222222222222222223446586:7<8=8?9A:B;D<{E=tG>nH?hJ@cKA^LBXNDQPEKQFIRFHSFHSGHTGITHITIJUJKUKLULMVMNWNOWOPXQRYRSZTU[VW\XY][[_]^a`abccdggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~H*\ȰÇ#J8P ŋ3jqŎ CI&K}$ɲ˗( IMdɳ'} D*hҧP6J*©VVŪR^ +MfӾDHnr+Ĕ(O˷߿ LÈ+^̸ǐ#KL˘3k̹ -Vh^;:G6Pkۖ{ݽ}>\B8rsgsc0_MknN2]JoJ7/UeŇ^_גE,l5&2R`L 0PXaKHaF3!!,>n111111111111111111111111111122111111111111112211111111111111112211111111111111111122111111111111221122222222222201/1.1,1+1*1)1(1'x1&q1%i1$c1#\0#V1"P1"K1!B1 ;1 5111-1)1'1%2"2"2!2 !3 "3 "3!#4"$5#%5%'7')8*+:+-;-/23?45A78C:;F=>HACMEFPHIRLMUPQXUU[Z[_aacgghmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~~vphb[UOęIʚCΛ>ԝ8؞3ܟ.*%!  $3AO\ݴh۵sط~չӻѼϽͿ·üSYH*\ȰÇ#J(pŋ3jx"Ǐ Ci#ɓ(S4˗YœIfI8sO< 0(ѣH-JʴҦPJԪXq^֮`S~ KVزhӪ]˶۷pʝKݻx˷߿ LÈ+^̸qGY2Sʕ-ŜYPΝ=Z4NҥMDZK֭][Iڵmĭ5.Y)|xp8o<9嫛C yسkνìOӫ_Ͼ˟OϿR)'E'E9'd 7! w!dT!f]b;tCb|:\{c9,S}R e$ }R `9v 8VW!Å7xlp4*!!0,>1111111111111111111111111111221111111111111122111111111111111122111111111111111111221111111111112211222222222222222222222222/0+/).&,#+'y#j ^U H @92,#   #(/!6' ;+%@0+F62M=;TE@VIEXMK[QQ]VX`[_caggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~H*\ȰÇ! Hŋ3˜Ǐ r Iɇ#O\y2%˗03IfÙ6ssϘ= UtѐE*՘tӊMJuuUWBeׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸s~}޾I.z8qƏ{N3暟C,})c.ysߙ>8 {D?zp˟O< ~~(!qH$E "`%OY!ivć xa!Vf(x$袉*(/r!+HgI<@fx`zMa%IeL!!,,8* %%**--0011111111111111111111111122223344555555555555556600++(($$   yskbYRKB<72-&         "&*.27>DJOU[bgnu{ !!$$&&**..114499<<>>BBGGJJJJJJMMOOSSVV\\__cchhllppsryu|tiN2ϤǓp$i`3MT@FOAALA=M=:P:7S75M55E53@31=1.;.+8+)8)':'%A%$H$%O%'T')[))a)*g*,m,.q./v/1z13}37799<}<@|@BxBDsDFnFGjGJgJMaMP_PUaUXfX]k]`p`ava_}_]]ZZTTQQOOQQTTYY\\aaeejjnnrrttwwyy}}ǎ֍ߐޓݙ՟բɧȩЮ۱׵޻ *\ȰÇ#JHŋ3j@ Iɓ(S\ɲ˗0cʜI͛8_00@ JѣH*]ʴӧPJJS2$`ׯ`ÊKٳhӪ]˶۷pʝ6 ˷߿ .@d+^̸#;b˘3YsʞCsɤӂNͺ͝_]-m̦QJ{߁sEBkYXp6raBT9^{O^N5Kqa7.{,~?s( Z癕a { :{凜 6ՄJ(Wr(^1W.V8~b-8|1yq  x㐈<'HFz⑏&&Jf⒘&-aJx򓞼(G9J8At<fZ1^ri f7qtG>$! D6򚐌$%-L^e(IINSRt`)KZ2%/IzQD!1c&st=HiҐT5MIn$'9NrL*[JvRg./{,ȧ0~"w 3 Zi"4 mdC nff8)jRf]g,}ѐ7JKƔ#L)ЁԠL;rH:(P5)TV=FNӖO'Jվ~ѪhĪK_ZGvի~MojM~"8O͉h*YԺ6y J-VV B3]P*N ,][(rxZ}%2c*S>TXXn3ݭ[+[r%]E: 7ˍcJ}؃2܅ld џղD-Q;vO@K'6*Wz]j,OѪ"֥PW3>[O:.pl?\C#&PM[P*eqG_y6s.w=qkXfwq ^ɟo5Ui!z`9 sx&rլMXpd &MJOZ _ ZϠ៹c膹ІfTInn:JXsZ\^6Fc G%sV3ߕ5k] XئAk5vG]jxoWmrv!]l[ۘf1,=Na C݈]6[:ڏm?yolczvAxY2kS opBuu pR8 vw,7oxe0W@V6l>wWǦ'`s6D\ָ|=A+t~*N(us] 7x]N XpncRF#O=WoC4sIxIٙ|)z馎Uh`َ|Xyd۠I9𔔹(r UɆWyh9/eEٚl@ Y`(2T)9U7 <)ɜBɚЉ[ 0P٘ yПyUyIEpIfiI|ZʞΉ 9Pyt9./(ՠ/h:;jPWG`I" P%jٝXТ0.*'u牜8*<:˳cK۱گ%ktO)J۲.:4\۰7Kخ=f۳; fjF H J;$ Q+K,{XVڵ]`bt7ڎg۸flK[r{IK{x{(ں{*K4k`ɸ< ǚk!#۴PK{k^k욜+m{림ۻvڹK[k[_a8[+ QK~k+[I  FdKkpjk+NLC{E[!ܿ$ ({+l. ,T4E=Z>;t˻Ԛ{QŻ+-ܪVv|x1|]t[^L׋c!g ȎLnV+0KɛǞv\Ȁ,_aL tȚˤ*ɓƕ竪,˄|ǢEŦ đjKK͏l· Řڬ ìEŬǬ,ͬ\lĸ|KpY΁LA,e@,<]X?[ĉь *,Ғ\)󌾜l6=VT ̓:Dk -,(,, 7]Z[=?}]d-D]Fۻn2=Ո`x]\|^]E`bݶd]g}֕J%m o-m q=׷̭ט=}\TdaM΄]p؉I P p =۲ ,-P M M 0 t-VقP}܂LSł-\ئݩ@} ۻۿ ܹ]En0^#~<;_ HT}-To 3/M6aT_VXZ\/GTEo> d_f/24_/?nr/\_vG$g~l?;Qq?v[Fd,~_~MO}0_XE_f> ?ODb~~ ؟ؿ>6?Bw}O5 ͠@L 0> D` >ȐD-^ĘQF=~c8%KJCRJ+|ә5֚DSN|YLh1bĆ&Li0>PT>FUV]j4X-c>sV-Nm{=6TQJBރRX߯ FdYG9ٳjӲu٭\H}KhҢܓZ]'[ǵm-y2eo.tT]~C<,;/AS>&o /0C -C ϶%@gn2@eVTF+Bg1G7RQ D@Xd&aDF{J+Q5ԣG/3 2L13rOdɡq%N)*/bL?/3e75l͡ZQW4R;ROMA,fFeFDdEVuQI_RV[i"W]w\7 PI%USdeUg[u*yZk[Wo 6\DcODd]vEVuUh]^{ﭖ[}[w7=DU7DWa]㝷Q|'~/_c-xNx6UQU~8k1ogv YE-'QFYe[~8w:jjs:km k\$hA픕~en;lΪ2N[F~nǫ;ro/X W7wZWg;^=vgrf! w=w\`FsSmřfn=zio>wV #C%O>myGg譇z+槿~?w7%|[`7ςB;&\ё.zE UB2u! 0CІ7!uxp"$Gx@,Db ]618bmC]WĢ{B!K[\8F$:ьfbHE,1Z7Ǖtd A\яiXBҐH71cȼU呌,INve(EiHFR#y0•e,eIMzҖ(uKS VJҘt%-1Kfzr/jVӚ0E4dv$-n1NrԹNvӝ:9Ozֳؼ0'MYŸE@ YBD8O64(D 9?Q4G:҇FԤ(ٶɲԥ/FQZ¦6 iN9ԧ?jPӓ)%$aTt4Moj RU jVU3 _+XTV0լp*GթVխW-V:ןծwk^0ֱN%2 ZSհE[X6ֱV:Yʆ>kLa;Z26BBjUZֶzl*SvvR-lhu[Zַump;c0mmmYpnt+V[nv]j5n4;P.׳u.U^uu{]֗Bx\M/{^FW lA܆vp5a2ŕ S‡pUaW /Bev-e3w m/F7}mvCZNZ?9In~[aj߽x|gO 8-&v3㞎xE>r/'GyUG63l׼9Is|?_y s\޳ysO!9ХN F_{>v?_@{վvo{^u`[;ɾwk|?xwx7|_e:v|~w f}E?z҃^G=)ߡ˫}e?{=ɰ{>Y|=O/!|}w??~G?~ԯ>~׿ˏ~d?ڳ>Sds@$@ ,|@ 4T1ptA=B1!$"4B9%d&t'(B#LB`+,+/.4!!u,>~~~~~~~~~~~~~~~~||||||||||{{{{{zyvvvvvvvvuuuuuum( //1122222212121212121212121212121212121212s~~~~~~~~~~~~~~~~~}t1g7k[8TO9BF?7@C6@Q4Aa6Aa7Mh;_k9pi7zm8~m:l?eF[LPTNYNZO[M]Ha@g>mz>}??BIOUY_fltzۀ׌șriZƠbСaӧg٫lrv{Ņ͍БӔ՗ؚڝܠߤH*\XÇ#JHŋ3jȱǏ CIɓ(Sbt˗0cʜI͛8srϟ@ JѣHLʴӧPJJҪXjʵׯKٳhF۷pʽvݻx[.߿ |/È+^0ǐ#KFx˘3ϠrM(G^ͺk_˞M;tڸsVLc Nȓ+_μУKNسkνOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*ꨤjꩨꪬ*무j뭸뮼+nD26F+JƵfv+k覫D+k%,lKD 7G,WޱRw,$s;(»0,"l8<@C|1UxlH\L7},G-n9HҐfCd"IW@Fϑd]%y?JVv4ɣ-ғKe(IR^͔%U96Vc%d9˕Җ2e.sK^͗X0)2b3eD&̛̔5ә>f456Mj+<(7v'똶q*<5ٮlS_|)OӞ*g>~"l'D Ot BЅ :#ƉR(3jǍHCZ7f<)!SCs.u%>cǙҔj6)rSK򴧙iP9 GH:I6j:UfԪagV͕Tnͫ_SKhgZZp+3Jg*ZWխl[p+Qr5%heI@Vj6ͪg Zi=ڣk ۲vmIۯoܐ7mqŚܠ.לus]Nuu]~n=w{ލWMy^WE{ak}/_{ד-mwY. hNX%enG%剝V-SΘ5䍇c5x=UD9E⑓A.M?e#NU e2n]Kf/ye 5 dm0sQj;yz@);ZTbKVmfb6H'Fݠ MC_V4uәt9jRԧ_U3F:b5 Zۚ{2M0<-6d=sb؅lR^3׿~*Q36[m/3ݰq{Fw*K;q7zYľR:r }psZߴQp>≐)^q2nw I^f%\^y:=KPAKoskB|OO%C?A?ӣ~9z'QrjgP7pG{(WxчA@ W}ۂ}5w.}{> ؀4X6x8:H>@B8DXB"(?@%wkڦwzS4 2`bfxhjl؆nhIQDŽMH@'v:7;}4Ѕ^X386(q؈88uLGMxsÇ\ަPd8h؊(X8XuMtXHDzrx9~GrgW%SlU6bdPR)?YVyXZ'5GqsĔ攟SRl |pr9%EzGV,n 9;h :m9ioIQʂo#Yԗ(1YoŲٙ9Vp PY Pa@ PI) @1up yƉyY) 9)ʙչ隀qyٛ ׀ 雷ɞ3)4a ٞZ@ )a J9y:* РJY)* P +zq܉!'a9`(1j OL G %:- A  9PfZ К A!fڦ0P ijyZ fmJ ugj@6*"Utkjz >J d7A wZ}*}:5:pʨ"Z* Q \ju0٧j z zJk}:9*Ѧ˪Iɥu@ yʩm j*Iʠ `qPnj *c*z:Z l޺Z ZɊZZ! ypjzu`ˠ2[pದY.ڪ? a<[" 4;튢7Ǫ5Ѳ u ![L9K0jAA * @0`I( G;]+' Dzw{٥ ѵu@ʠ p 8Du˥w[ [eI /˥{(Y°xkXHkh[j[oۜ#j{[lŻ3[#ʱR-٠٦kI ʥ; Q *˪I[ kYۨ۩۩ 庾>@+=J ;ZYʹ#ڝ| :l.L[kʱ=a \ڝo{;: 4J=ʽ|J$ի:=!! p  i:zZ i*/`;siu\y*:|or,v\x,)[9 /n~:ZzܵȉR+K읅\}}<ʸpk隑zl\s nJ Нv<*ƛ~ t̅ܪJ!Ō_ ˠL ȶ ܸٸlˋzl~˔lχgl1p ,ܾFCŷѼL`[pܜ)&E,ɽM )}$c+?DZ-ʷqLH5m' 9Ҍ J 7ݷ*`K$kamE:q 1lM 6]2]HM[zb]Dj̝zM"Kѫ YٳAAkMRͤ+Ҭ+ښ-?};ɪӊØ,DJ Kع\پYe| \ZTu  "+ݹ|mň#ݬjؽD ܜ" 9® zqɛJ<ٜ'N+*in@( ߛ+n]z=ܵMl&αyl*n-nI>Ԝ+;=Az 9y :ǀKB/]{[N &Gj"^Afq娛K{8'6ylnq% `_ֻp^ɩ412S^9~liLj@&M0%} .nٮ=$C)ێ8QAS!N2af?7魯 ?_hhms1! LjO &:QQ;64O9Б3PA-B!)SO/(!!2, *5@J U "^"$h$&p&'y'((**++,,--....////000011111111111111111111222222222222222222223333334444556666778899;;<<>>??A}ACwCEqEGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~e!!),>e%(*!0&7(5+4.11111111111111111111111111111122111111111111111122111111111111111111221111111111112211222222222222/2,1)1&1#1!111111r.e+Z( Q% H"A :40,(&#"!!!"#%' )! ,# /&3)7-<1A6G<$MB(OD+PF0RI4TK9VN>XQDZTJ]XP`[Wc_^fdeihmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~H*\ȰCJHň3j8#Ǐ Az Iđ&S4rK-_s͋7srB>J!ТA"tiΦNmBJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞MY^pƁyۯā9H`/ϑ\{{ {v/WW\͇=_~fK-3W } J')Lh\da w ya'q@o!р_8P !Ha_cc`;"!!,>e120./+-(,%)!'%! )/6<63,$$')%+(/.11111111111212111111111111111111111111111111112200.-+r+)^)'N'&;&%+%$$##" #!"!"%'),-/034679: == @A CD FDGEGFHG HI'IK1KM=MOBNQHPRNRUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~yussux~pH*\ȰCJHň3j8#Ǐ Az Iđ&S4rK-_s͋7srB>J!ТA"tiΦNmBJիXjʵׯ`ÊKٳhӪ]˶۷pʝKnT%Cm_޽ A%D+&R"#qLH-cl?#w$A$P!%I=ȸsˮ-E}[pY Wop̑;UOGr9{Уs|sd#L_J AN ES HX L^ X_ fUya ~a{bmc__#UZ%RV%NN$HJ%DG+CD1AC6AE:CI=GM@KPBNTCRXDU[CW^CZaI]cM_fNbiQekXhnZksWnuRozNsFwBzB|@<9:?B?<<<94421129AGNRWXZWUNHB=9952/3;DKT^dkpv}ϻޅT-*OvȺëťƛǒNJÆ{srt{z|xsrmlm~k|~ez|YwyKqv{ JѣH*]ʴӧPJJէqgO`ÊKٳhӪ]˶۷pʝK<{!˷߿ lH+^̸cF"~w˘3k+ɛZM麝?~;zװ9{lڸs_NM[w۾ ;87.ل &H'@U;ϣOV8ξ}h!?\O^~qeLM@`r}{ 6x|f5Gq&؝}by!5wW΀b-,BHV Ÿ6Wcy}% "asmg,&鞋4JY9]qP.'~kfM~'`8jr&袌6裐zզfoƙ(2(_^<j}9̹""骬PNJYN%a=_Q#?Ak8TL,5D3UF;6=H٣? TC+ԮeCn(T9.=+c&huoc~,_ KýT>ܰu Nw {|%'k#0,4|6<D`*|R9\w%MdwI? +Uՙ>x6;c!ѭ|߀.7tAQ^ocWngw砟8P\M>:.ks 5ɤcݳHw߮B'7G/=~Y󾶤Hc䧯/o_wIVV&u/.'H Z̠O즻wN:[q6#ܠ gH3P$&ܞ b6 7q&:3=?0!axB` cPdhL6p;8x̣> dFB L"F#'ICJ⒘̤&7Hx򓑀(GIJH<┧t*шF0╰"f9D%. KC◄ !b3D& ?8ә~4@jZ_Y$!#CV#'9NP~De*WJWT-z$0ib&S3)i^ARMI]#9'IszT#VVg=syO| s ה3|_kͮzr *d&Vգ,]ZRvv+ehGKZjM݌wX%FVon6yU)hR⒖rnti;TRTukh ZИ>p0?~D$&< P>mv?*׹מ-pK^Ԛ N10ns!L;89k7lf5 U8A&Pvq $XncAT!R+UL%#xpne,Rv-t$Qedh)AB`(vqE80]#mƪ4N{܍ncz†uE *~]I̕g6sN9͍Zt!#q]6zȳG#AtpݺrYzk~n53x=~eO~qmg:NUtgw8G/oCO=Q~x#ZBWP[ܛzNC3?8{+q}wyts0?#Ͽ_}}+yyW~y~~t Xxـz(}U%WV7"}+7 @ (H V ,Ȃd 0{y 7 xX:x<؃=(B82pHx HXP7R}`Vh)-0؅2 w tuhjȃD؆B( d!DOXSx' zxV(-؅h y|wybdhvЈvȃ0XxF 2P#ȇX臤0hp]EȈ؈hhT(Hh0|:XXոHװܘ)2 XHX|h؎x~hu`ܘ2rMԉhVxH'xi dXxɍ`  )#P) 868ّ<ٓ>"i)+ɒ 7(r0G4I6y8\ٕ?)3DIwf~ؒy lٖn pr9r9YWY^ٗ>Y gcIfy i]薎mItq ҨkW{ٕ9FpiV8nIYIrpvYl@y񵚬ymyYmЛəÙ90YԦŜg ق 9i ٩) Y y㉞ɜР ؞Y YɟJ&j ] ,ڢ.ꢋɂ: 6z@n!8FzHj'P~HVz7ʣo\ڥ]?ʟ Izhʤ0 lڦnڦN [Q:,Xzx^ڧ} 9YjHzEtjzz꧚ʥ JCjgʨʨz* ڪʢPzکd:ĺzo%ڬЪ0J *jf:ފp蚮* jVjZ z^꫟:I亮[ڮe̚ڰʯb:k[S ۪; మ* {Y4[6{85۱<{Q! &;D[F;%[+.۴*:;T={G۵^;aLf[U[dжnpm{t[v{xZP~kbdg[jcrq [v[K{˷ k룁ڸ ND+dKN ;ě{[ N^cM [bڻ۽[M& 苾;۾;b0 [IۿK| a,   $\ (*(,.0 =}Vp  . m]}}G ">N.*N> `  ʰ<#BN%~'nUUL N P-0^5~Z^>~GC>d EnGJMp S1.W[~ _b^.gikm r^ONv TzN|~~>.GNnNunT^|^nG.S0T̾@n뙞3>XNŮgU.n뷎>6F^^~nF._./  ?FB.RRp"/$_~l$FHI2_=~.Nk^^b?d_f/pr?po < ߎ z|\F`1_bj#/ t?ni?qS/?F__O??gtOҿLPşÏܟ/#?MPo֟ro_ND@L DPaB >tCD!^hCF=~@H%MDRJ-]̙NlęSN}\TE)EMUTUUkϟ~ TXmzUZmn@uśw"ZkpX`qDbƍ+CdzWfΚ za'MF1e֭]Ggڵms[7蜪}/V7jō|[ͻ?_\tխ_Ǟ]Iȋ^x? zݻ߹v׹ǟ_p⧟=y?/!{/y%>|ʩ 7!}׾}߇?'{^!į7@C @.~+7A VЂ`5ЃL`@0{TUB/a?8C0&aQhЂ1 i8DP9D" wX161O$bgWE.vы]\x'QCbոF6ahwcG>}d Gj98HF6ґld!%9IJVRCINvғe(E9QZҔDe*USbXe,e9KXҖĥ$AK^Xf0I\ҘDf2Lfӗf4LjVӚ&2 MXfӛL9NrӜDg:YNӝt6]UuӞ'27?5=A8DC;KF?SG>]HAfJ@kLCqRDVD];i1}ғғғғғғҔҔҔҔҔҔҔҔҞѹ &////////////00000000033333333333333333333339BSx``iPkEh^/}'u_.n+/?o~O_>o/o?Ꮿ[־nV9o۟ ׿YlKVzPf \i V pc٠ ڰe!uVh)\l1GV:1;bH E<36щ6bu8E*ЊWbB.vq_8Fь&DcUF6ZЍo`h@:QwģG яd 7HBϐ_"i?F6R$9UҒ{H&3IN!d(E$PFE*Te6թjT7UϪWMzvv_k*2ԬhZɗUo}g\Ke4կsk`CR²l]46vj$;ُUֲ3lf;Yͳe]_E @E7UڼֵcllSZmiQނ.lc[\"˵ls[NuK]nuw^ȎwyW^ήw{_7U}Ӛ_u`ꁻ. 6냉aNxNǚanXqb8%?⑮ؤ-}Θ5'x=~E3.M^efN٠U畫elny]frye6晓fT9mcgZu䝟g`Y5\@rн,+>ѓt!JIs{4$1HMӬnta*N~$MD:nV$k6ʺ!k<!Utm;T꧵L%>îcymlummof-r[kNwغDw0cw}i[s[yF;7v!&^7ꐆR;K#Ρ)7P{m ߡXBI)ǘ¹כGڒ(Ϲ5r zy8t!G7ŕV7ݴO:b~PXFϺlo~TOlp ]F\XW'4M@p#O;!'O[ϼ7""mwhu}qv|x 'w~#ȟ=zpGQZxUϞO'~/w~dI_z?Z;w }|w~xx~~ ؀EK7z}4}Wwv}D}T[}}*,؂.0w4X6x88(K`QwDz@@ HZ#X&xR8TXVxX8:\؅9ȃ=hx?CnE8wGSfwv|SYЄMPxxz|؇|`8XxxcHwdﳆv#Ht8H~zXxx舂b'RՆn48>r؋8xȘGxHHQu=IHivڨܸXX樌'xHIsHVXyy=K8qH>B )YFy#3LٔM x5)7SG}zWBGבC`b9d9Jh2i~Q|SI=r;;ZI\ir^Yz|YI~m)zoTUi*WUu}9ٗ9Xnws9m@0ٚ9 a P`QYP6 ̐6b?Q 7)p` yI1I?!u ) ^!A Z-q I 癠8%Y'/Zy"ڟ1Z ӹ1*>12 I !ـ- ˉ7jRWy#T +i cfZFg[zwjs\j#yZ` 9yZ`# znQJ8ڨZ:'1jZ* ,QZzZjZӪڦ+ੇڬʩU * 9yͺZҰʬzZ"Yʫ:Jת:ڭ𭻚zJj*Zڬj 𚨊1y*̰Z `*̐ tzFɪ:PĊPz M `**֙;;zA`\9e )Q zpw+ yѐp *K{.1=KA먷)q 詤!a{+qm Z*x\{t(Q)ˣ[;]+[+:막 *۹Rf+Jhk+ꨖ[zj)љ Uzjѩ@ZZ&A9 *+ښ"-+1K6*幡kѴ >ܭ \YKZ](l {Qùٿ >\,& =|JgP\j,9+I<ܿ:@?CpĂ<k۵EUM ` ~i2ZyȻjn+ ɑ!L5ڢ)aO҇Lf*J#5-7;%NI"M +m%mINmȚ#aE\q*HJegmhKȨ2O֍rt-+ > ְoj- +Uۏl"zSݸ.1l̩> u~ܫ»-в,# Oڴ (ӾXL=ͽ ?M_Lݣ{l ҺM>;9s,Uڳ =g:ߦ aĝߎ߉ߧZQM?>⏋IHJٞ F*)E~iw Sn&CY[^.v]Q^S.*LN}_݌.X.S"++}-$ʪdRzAbHJ}.9޻M] Nfm ۟8TN1 ,$ծT-خ] |<$nվﵻQl .^N!!2,>  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~sYE6%  +8GZp H0YbńU+ !!,>112222111122111111111111111122111111111111112211111111111111112211111111111111111122111111111111221122//,,))&&##!!}sj`SE: . $          "$& ( * /" 3% 6( 8* ;-=0?2A5D7F;I>LANE#QI(TK-VN2YR8[V?_\HcbRhj_nsmu~~~ygS?*" XH*\ȰÇ#JH3jȱDŽ?IɆ!O\ɲÔ.cʜI&͛8sɳO6 2(ѣH9Mʴ)ĥNJ5uUUj=uW]v٘eϪ-۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘ۜYϝ~ӥ[͚ub˖z+۵۝߽۫ncBŃq÷IN<#nmO^w;M)C˿S~x?ß<}h& 6F(Vhfv ($h(,0(4h8<@9'*H˒L6PF)TVF&d\vP^ɉ20̙Ӥlp)gKL\ w•'.vc| c:V((gn]h6أF褡bږrQ?pOOFpH.F]H*+"kjFns,Oƺ+vakN*{-F :S.nȄbîҼ+ˮ6] ˯KuA 1Z 3]c̴-񋘿ALM`̒Ƈq 23#S 1&a*CN'2 SJ73Dg3@K1M,2-{Dp OOX<0œan_oD;3<-o)-ؾ4v0\ߝlVsڂ?f+⍳k[ nԃQ邙ꁩ뀹~n~>}.|{ zy)x9wIvYuiOty?s)Xe{ cFO)dؑ*{Ud 1\ ( @B\a0IHb 6fI%|cP(İЄy OZ12 kBĠpN@ (' LHL%:J !!2,kR. ([#!))--/111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111222222222222222222222222233536486;8{=9n@<`D>TG?JJABMBhLCmNGrOKvPOzQS~RWSZT]VeWjWkWjWgWcWbWaW_}X^zX]wY]tY\qZ\m[[f`]hf^hm_js_lx`n|`o`q`q_r_r_s_s_tatbtcueugviwlw~pw{sxytwzux{vy{wy|xz}z|~|}~~~~o^M6)  } { {{}-<@)dsd:@ڈcϔTViXfeZN9G>W148>$e1fLɍZLpyKiFT}<3f#phO*Ϥi#ihI*q(6(QcEښ=98+l8"ڪJ& =-YO={G=ۖ;Nނ۬#-~k/4 &xrMoC,RxnxᅔB 3,.Wnւ@rtRy㐧ꬷ%hGN%?5IN/7H;͘뾻Cng֣3O'P,Kْbo]˶-ô6ʝJxz B`z vzj+^&0=/IPe̠C& 8cE^ QhnRM ?fiįMcȨg$s6_<|R~\8 >roD~z}?T}9/5E>ExԀM`X.NVhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜ϧ*ꨤjꩨꪬ*무Q뮼*Qk&-F+ Mkf- mBkrPnZ ,`,l'C+j,aI$Y 30lIoAp&]'3ALsI6,P;q2eJ={\mMgҢ\tHl9='ԡJ=YWsL8crr עJtGMߦ< l Sl_pB&0#H|Rx"x"-8 b:w殿ιn~;x?:y#/.ι;G뀟g^:c7c.C@8'"?c{F99B·m s]  OzzwվVڹzL^@p.d A$ D~̡wTۡH">>$Kh&:QD(ZX]|D*f`b{*/h"{E&p"zHE7x#*3񏀴*`xL"ALY &JJr<%#(M (GIRL*WVTw2EUv^ 0/J2I-f:ϢIjZTӼ6 rt7IrzkL:5u󝾒<穪'>9z@ <9?}2|(D)щ]'F3΍rh8C*o<)JҕV.&Lc̙Ҕ62sw)P%ԡF-R2[N}궢*Uxݼ*VIխN^XNէf=kPӪVG}+\*׹6v*^:սժ*q_=,bŪŖ5=gc#,RW,2YYqš,h%d@mçL 6zd˫WumEEʦ!@p%~TVrk ܶWMUs[zITH7xl7%/u?S.l?Ԯv<. ^ .wy{7}.mKWE}! ]ۊuk^ĠJ|W5>p? 0NqqsaޞV$&~q<ʘyB6U]pNZw9m+wVѽ;yucS~UOZ?xwe w)9/AC)ٖX)?ٙ#)ley|)ɛI}ٛ1d9py1ʹi*2 ީyYy 9ٕIٜ)щf9YyЙןVʜI͂ zIi?HiYz٘ +jJ9J4HY);jz0 3*HEG:I> ٧LY'qJY-$`:8WڣZ2ڥ^7Y9IڢKM:Xvx~bjd hB8٦nʤ"*ICzzh~jOꥒ(zJ'IJ ڨ-iꑸjRi*\8E訳:9}Yʐy: 犏ZJJjX Zh 6J(:I  i  +[ 럨2*JxT!)[#b'G+x5VH1u!dA˦]=״NR;K x̷ǵ׵`b!!2, *5@J U "^"$h$&p&'y'((**++,,--....////000011111111111111111111222222222222222222223333334444556666778899;;<<>>??A}ACwCEqEGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~e!!2,p'     "$'+!/%3)7,:/=0>0>1>1 >2?2?2?25=2b:272423222222222222222222222222111111111111111111112222222222222222222222222222222233334444557788;;==??B}BEqEGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~xbO@3)  )@[yڑܤ޵޾eѭ`*\P  aXā/. L(G,Ƈ"Gty&L3ThfęIiQaO Xȣ=*)ԣ Vj_, W"/Ўh;ϞHJg2Z~m睄rD{ko<| *4!Np:DŽ !B~"F Ypdw}z֚auFfgw]nǎlP/ͼ# ]!!),QiV11111111111111111111111111111111111111111111111111111111111111111111111111111111112211111111111122112222222222222222222222222222222222222222334455667799<|~|h H7tc~9`zN܃r 5UԅxM6 8"q\\80f(^#E)w]0cDR(+R(%)[} iۓB# śm)"5L`$T`2 JeZ]ޑuPn:ƧYhP-h|t. 顎g6饙)h)ZjxwjX&Kzꩭv7RJ,{l6fRk+blޚ݆{mˮF]7[ޫo;!lpEw!!0,WV111111111111111111111111111111111111111111111111111111111111111111111111111111111122111111111111221122222222222222222222222222222222222222223302.1,0*0)t0(h0([1(O2,>4/061*73&95&98$:9%;:(=:/?<4A?;EDDIIJNOPRVVX^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~|gpaH*\ȰaB#JHq!D|3jȱǏ C8"(S\ɲ˗0cWr >8sܩf,<  'PH4jSӧ3kƺ *QSj ֯2 S,ٳ+͢][TWg%+w.غvku/_~: ,8)W"zx1WŎC$Xk)7Ϧ?ܚCw;D‰[ӆeO7Uy~Zh՗;;ǺmRAgvOwFtWRcv5؟򀸎:挈S}0iٹa#cXhxȢ0ˏ15䍭bpON*!R$s$|U8hU0yqY̚`c%zGeSYg5d≙`\&)&6L? *vE꜀Xw^Zii:Tcj-JjZhΘjTK +KZ++jZzlfRld:b"Vma _m^]$ˑTAJ!!2, *5@J U "^"$h$&p&'y'((**++,,--....////000011111111111111111111222222222222222222223333334444556666778899;;<<>>??A}ACwCEqEGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~e!!2,C  '"/#6$>% G&"P'$_(&o)(*++,,--..//00001111111111111111111111111111222222222222222222222233446688::<p:o4n.m)l$kjk l m o!q!r!r"s"t"v!w!y z}#&1:DO\eoxÐȎ̌ϋҋӌԍԎӏӐђϔ̘ɝƣëe8/*\ȰÇ iH¿3jȱG̉E$(ShKIIS#>/ Rɳ&Μ{H*]TKBe%L2ʕԮ`ÊتW3}Ƕm[nʝKW.\_0aŞ߿(1U^`%N,9,c%J"K}f߿_3gVl5.˔T{9{洙lO7wԟM::/+zJF-Wl~OǾ] SA!ָh?ޯ謿W_雩Ksx{_ZX`:ij hBƃlT`QM6sƃ y_X-/Eatf ڈz"u'H&"%2JI9TiXfY%Wr`#ZǀifE̙lVy̘R6mi'3V@ D*h'VA!b裐F ,(f(J)70詨H[l1˫\gj!:[K0cS^6Wk#VkStָ䖫뮐K=1; !!2, *5@J U "^"$h$&p&'y'((**++,,--....////000011111111111111111111222222222222222222223333334444556666778899;;<<>>??A}ACwCEqEGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~e!!N,<K222211111111221111111111111111221111111111111111221111212121212122212121212122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222>2J2V2b2m2w2.+*)*,.3356789=?BEILLNRUX[_hwru~vx[uKp4l"ihh g eca^ZVRNJE|@f2V(F78EVp#!)'//335577777777777777777777777788888888888878797=7I3c1u25444444433331/*"  1Qqא۷a H(\ȰÇ#2Gŋ3^ȱǏ CIIS4xD0cntI͛8sr\SΑ2Iѣ:{*eЧJJXZu+ŭ`Ê%X'^]˖m٥gBmKnշJj_x{+.L&ǐQ*9qȘ37\I<&a”ӗ|[FshҚ3ץMF}dѬsO[ i .Y)w$LvtlPuK>(!Lek<9h(dWwճm!w"'5wT9i&Qۍ[~-r\x$%RڂE\{%܃e| H}]}HJ'b1}aoڈJMH$LPAZ!O֥!%"ahze%ˍ4ܚ"HmtideP6j)1LVI:iEvzi8L):*J UE֚k:d~V [ 2+-DBfv+k覫+k,l' 7G,Wlgw ,$l(,0,4l8<@-DmH'L7PG-TWmXg\w`-dmhlp-tmx|߀.n'7G.Wngw砇.褗n騧ꬷ.n/o'7G/Wogw/o觯/K[B;H@p @'4 % Z/AW A냶2F^_( WhЃ%lBPZ }xC bMbD#1cbħ!qDavESQ1_RET_Һ,QRcx3q, Ǧ24IBrpF:/&IJZrc(L򓆬G? RJ򒨬8 P$e)yTRfDL _ Dr-/).MZ`$/?KF3ü4Lfҙf4Q\" Lmn2fypVτ9m6w.4<)2oŞ%9g}[t;W3fʇ3\?B^3Ĩ%GtԚH9ѓ ->\)KF-(6-E SL4iNJӚ"U1-AYҳtܮT2eUqUb=)V!)yM]UJY%ֵH k~x^wuu`TXwecK⨱@kfY't gE њ%I9պvmm!!<,!8 ) ; Nd |&#*(.,326666666667676767675:0F#j /BvYjm`zZXUSیPӒNH>t8e5[4R3H37222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222335577;;@@EEJJQQYYbbnnxx~~~Ďȋ͉чՅ؃ۂހ~}||||||}~ꀷ邸脸熹批区䏻⓻ߛݠۥ٪װնҽHy(\ȰÇ#2@ŋ3^ȱǏiɓ<4\˗I C8WYsϒ)!Ji&K9ێ fǽ H)i^QVӅ[\_4 6Q`*"i əىgz'PnYT& nhg= i LJi"ini} jZ꧚RjG!!4,.f11111111111111111111111111111111221111111111111111221111111111111122111111111111111122111111111111111111221111111111112211222222222222222222222222222222222222223333555465657}68p7:d8=Y;@M>A@?G?EJx}2[,Z{B-ߚ8-:{J☮| o+;j%t-!!),cC111111111111111111111111111111111111111111111111111111111111111111111111111111111122111111111111221122222222222222222222/0,/)-&,$+!)}(t'k&b%Z%R$J$>#4")! !     !$&),!1!#2"$4$&5%'6')8(*9*+:+-;-/=12@46C89F;?KACNEFQJLUPQZUV^XY`[\b``eeeihikmmnpppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~y H XȰÇJ8ŋ ȱǏ CdD^L8J_lrŘ6e'O;2)%ɢQ"-(ѥ } QT.3V5P(VնLْsWJ;S\ a9dgAyɡl2o'S6gÍk'x8Ǜa$s{=9B%gMG ƒDJ"O9z Q4c<`rIbBŤ' 6Ud#b9qF8$(_ Y>Y쑠BqGBbcM5YLåPT(f5\qfQA!眹ix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*ꨤjꩨꪬ?*무j뭸뮡r$c ,6,.ڬP NjP-tB!!2,w111111111111111111111111111111111111111111111111111111111111111111111111111111111122111111111111221122222222355839/8*n6$U3>.((#     %. "4'):02C9;K>@OACSDFUEGVFHWGIXGIXGIXHJXIJYJLYKMZMO\PQ]TU_Z[cbcgiiknnorrrssssttttuvvvwwxxxzyy}yz~zz~{{~||~}}~~~eLh*X?.lĉ#^hFe(?MFJ4Ydn[d2)l.]rdk LJ=574\n=HZ& nXexZsisU}--yU˶p7۶Ԩʗ0cV萦̛8o"3ϟ!R щ=y=ʴiC: 4)ҥT5֯1vKVث^˪yViڵp/87ݚuw%W n=)R+nXċ#d6Z|٥͜%ѦSװc˞M۸sͻ Nȓ+_μУKNسkνOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tv9@wx|)hj蠇g֙(9ڢN'jVݥesͅZڨ.gjhܪq^&*٭kdܯ+o*f챽%;ز`F۴}Ukmu{׷&]۹qkŻּfZ[ھe/g%vy6,)@,G\g1!!2,:R)1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111222222222222222222222222222222222222333344556688::==@@DwDGkGIeIHYIGOJIILKKMOOPUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||~~~ H ZȰÇ#:LHbE3fȱ2BIɓ2Dɲ%Ɂ ]lR̛%asd=y 'ћCQ$j̤9)ҩK"=lj%V_ɵIcYl1Vme[#νj.վxƬtɻݩX(`fcN<2n7щ~I5"AvH]itjevݙi۳WD/sI 4L5+_=uyoWL$}:>??A}ACwCEqEGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~e!!,w111111111111111111111111111122111111111111112211111111111111112211111111111111111122111111111111221122222222222222222222222222222222223447697;8=9?;BxF?pGAhIBaK@RJ>GJ>CJABLDEOIKTKLTKLTLMUMNVNOVPQWQRXSTYUUZWW[YY\\\^^_`bbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~t࿁*\ȰÇ#J A3jȑECI2ǒ(Sxr˗*?IƓ sa˃9{ `СHQdҧl *G6ję rJNb˪}X[ޖ[Kwaxw KXῄ ♍>vʘ3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μУKNسkνøOӫ_Ͼ˟OϿ(nQ]Sx]$? *H]EX:8Jؓd;.ޮ[e_02L먛F*|L focLv:*,YƜr ͣ<ɹ3l΢<4|4 ]ѡ4*=5'; ԠI5Z5=kMqg{#I%6oڞ=7U=&57k*^4;^7gݙߍ#K~c~y}QS9]Nq^釫6k>c>;}27+1;8;K/0ÃfK?`L@ZNAVOASPBOQBLQBJRCHSCFSCFSCESCESCETDETDFTDFTEFTEGTFHTGHUHIUIJVJKVLMWNOXPQYQRZST[UV]WX^ZZ_\]a__cbbeeeghhilllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{}tm`TD7-$ŒȒ ˓ΓГѓѓғғғғғғғҔҔҔҔҔҔҔҔҔєДϔ Ε͖˖ɗ&ǘ0Ś=L_o H*\ᇇ#Jŋ3.ȑƏ C:H(S\$ˉ._ʜI3bL7kI2̜RITϗ@]SΤAJUy%ԡSviDXUcrZ!طa.],ܸrin^tQK8_(LbNulvoĒRr`7㴌,hâKw 4uI[5}n3۾]WX2s>D]j׫7ghSw.>9Oo~<߻/c㟽?OwJ^g `>(w(!a蟆Z d)( !%Vt")b-^/ H88bc}>Xa@ydFdHB$L*F$&j]SJ$Yre#i%.z!2'gx9cvm:X&"%E-5 餋j饘f馜v駠*ꨤjꩨ(I IAū>$1J+++ +ϱ673N 3smj-2 R # RL1Ran[c,J1 #E,|0T0R~ 1jj P@!!),`U1111111111111111111111111111111111111111111111111111111111111111111111111111111111221111111111112211222222222222222222222222222222334455677889::6|94l81_7/T6*F3&:1!..&,!++- "/$&3*,7/0;67?;;BBAGHGKONPQPRRQSTSUVUWXXY[Z[^]^``adddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrsssttttuuvvvwwwxxxyyyzzz{{{|||}}}~~~KA*\ȰÇHŋ%NȱG7~IbH%SSτ<{"P:"]1(S7J*Ģ.֩^Z(ٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k9*TJAQJGAՏSXc٩im;1nEEFY^s ٥c8؁:sá ,=|T\i7E18REaXTECE1a5PAal$2a "4a!b4*c"bHb3$3bE䒴!!),B +11111111111111111111111111111111111111111111111111111111111111221111111111111111112211111111111122112222222222222222222222222222222222222222334455667799<yW{|q|iwfoivommfj^YfNMe9;c57\25U55H45=446334333@443644C55n5443322222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222O c)xԐpJH /VQD9|BȊ9J̈dI1C's ĩϟ@ JtME*t)JD:JիX9^pG OɒeϱR}aXPEmk4\5[fr߿pZ.̸(xq cJ0&3nݱr\I/ĸAO.xPrg&"H񢴇IE0Nx+ۋ+fk1ԧ8peÅۗ/a<n!˒xzW~`٧_P E(!dd"ƐG Ds=t;v\p't_4p\Bhay"%JG".Š=ZW  9(V.6Uͷ i hh&cfixi^_gV&UmEd}uCs56ra͕i ]&ѣEꁌ`8-HiG1zEFzɭ]HR y%xY^Uqںk"S\#I\bsARoFLۍR M[UZsʷò ~qƐS41?RM8 qhܴ&-@pnE/'z{> IH(BL"'/1򑐌$'IID:̤&7Nz (GIRL*WV򕰌,gIZ̥.w^ 0IUZL2f:Ќf4+&T` nz 8IC^1&̎MrLܼ1PF1L*[Xβ.{`L2*^(@4͠\T`pγ' `;iBڐHDC;& F@ҘN (=l Ӡpz74E@ l͢3PC6Pgк=Ny+Mj^ \͑MS@OMmk;3irFSdӂ T@.9` bmSf`l~;~派P@ 4 ׳)nERCkPNGS@tV VnvoMh/00 ؂6[jv<؃>@B8DxSGWEG3{Lx3A )hXxy2P|'srXIFi0P?ls؇oh0wH >f臊G6} =aߖX%10x8@y9gHh0GxpmoX~d1x&hXWpX{ G`&hxHӡX|,nF7Z?bI!YBDZey0xܨ'3HX88CQFH*cqB]DGz%'f$ C7Db Y_4FIJesm8fGk11\1\ԑT2 <S|Eebxk9ܧbմF͓9E8I8>YFhe&v02W4 WzU)#-~%B1u!dhelxJ2$|2F#sbp=- f EM;HM?;mQL I+ԅ\PZ\}VJY^~ .S]TaAbHrC9:F\eNC&oH"=V/N3>2t' Ay4.Ӕ5~D^A83B^Fv - E夹 4^ ZAtFHw&x6>9jnX=& u$r>Y .o!%y~nexY፮&4B9ԑN;ijbn G櫮,~,~ixBn臮 Fb蓾u~ΐmo窞ΎF>~. d>V־?NJQ.>ĞFu=v3F^nN+Y8 ?2yWN^~Ӟ׾I|KQD-^ĘQF=~RH%MDRJ-]SL5męSN=}TPEETRM>UTU^ŚUV]~VXe͞EVZmݾW\uśW^}X`… FXbƍ?Ydʕ-_ƜYfΝ=ZhҥMFZj֭][lڵmƝ[n޽}\pōG\r͝?]tխ_Ǟ]v v"S˓]}qɻ?ۧ_~8 p@ | ۏA 0.T PC?0GDKDDMd1WtC40'0GwGǃ@ 3LA: jRɻ 2 2K!@] ]עl%o {[xH~Xj%aS 5U^F =%/5eFEVnK^1ȥeԞaQRK"纲YWަ:Z@XW[ՠ̲)g!hE rz[Hk^^.ka;qf[= JӞ\l,3YKZ6|!OF_-6vc bSgWgx6Q=x7E~wz_^(@}e!Ck]U6J{cH~4|!`Q0'}!78Sxz"ߙR@?쏁O$? 6z7y`b*Eh7Cl֙@IK! Zg(z ] ^,(*L[2bx(oU1uaڀRBB O/F\$ !ڂEU`JzbDoϏ7\Awh%R~{|o4T3TB57[lhG!MW%K~p) ʒ8dqh!+a'U(-v凡(CG1@hfHgQ}&-A@c3*mH-9@)шf+P65a0ZhD&eRIWTb*I@z޲beM3&ˢ5qPJn6bl hC T2K H BsE%A{Th;x<`ɸS9  hXr(I*A..թOjT=CL|uG_~PիfYS Fo}Q\c׹ʕwkB젮+`*X !!2,f=>3333333333333333333333333434444644944>43L33e3222222222222222222222222222222222211111111111111111111111111111111221122222222222222222222222222222222222222334444557788;;??DzDHhHK^KMVMOSOPPPQQQQQQSSSUUUWWWXXXZZZZZZ[[[\\\]]]^^^^^^___```aaaccceeehhhiiikkklllmmmnnnnnnoooooopppppppppqqqqqqrrrssssssttttttuuuuuuvvvwwwxxxyyyzzz{{{|||~~~eH;ȰÇJHbE-jHcF )zdAdФIa9 'CGcI!@2p(Ҡ`~\P2ExFC ,r'I#e M]= +V镌[NVOۥ)9[ cɘ8nR-Mbؕ`q#6 ,9$@)6͙ܷc!" s9X!Y"Mۡb]NxN!rS6Jܺ⩰EI1~M7E@#PN m\C!:H8 G$̈́8y@aAFgsA QRBΊ5V2,Yd] ÊoyMy !c\ E€A[DDeG"Lߙ iFqy12^| s*pA5xJDܙwp6қZJ6_lv惃u  qI6*)hŸXW K͔ 4N/&fEFjs*eTAX[VT sf8bXP7XXg:\6Y N˒5ohu f?,  <p &qcaq+PFWtctudR7h)fEY)!;Z(6H !SF1I SR8q}VV=P?p|Q8[km3&ChC$ 1DxC CKhV<Ǹ \/$!!0,h<<3433533634;42C22K22V22d22p22~222222222222222222222222222222222111111111111111111111111111111111111111111112211222222222222446688;;==>>@@AzABsBCmCDhDEcEE_EF[FFXFFUFFSFGQGGPGGNGHMHILIJLJLMLMMMNNNNNNOOOPPPQQQQQQRRRSSSTTTTTTUUUUUUVVVWWWXXXYYYZZZ\\\^^^___```bbbcccdddeeefffhhhiiikkklllnnnpppqqqrrrrrrssstttuuuuuuvvvwwwwwwxxxyyyzzz{{{}}}~~~~~~~~~~~~~~~~~~~~~aHA*\ȰCٔ1;E2}2xC&i  bQN8)KCwi[ײbMPNhtJZOL!HMdS (ӸZ%%׋Y{6-3n%S˭M *tж` dJJ ̀O̠r'prwq%R͛)b:{cP& U{U<o9p *i-Z2bdOE+.;ر)+s3mo?mو4PW-mwqw ,jdT ,A'i v+lPX# 8=@L9܄7>8IK4"A٠GXDŒmPd- ;; D 'N L8QG+4). &x4C0!Ai<  %j5+LΈ3ȴL4I*1c,`S5jhrC)BMI3DŽC Ƈ0O::5t7.1`Z `TAw#i[Т6x]PZ9Gřt ,4 ;4 *@pF1|t},@k * a2T6+<s%( g>$0*Ď69&,YFK=4 lAH'TM! ¨Ϧ͐;ԁEV\>`WD 3U6J*7Ҍ!3a<1l BѼQ7AtҊ21|,I4Gis 3Vm!;oI`5!StΜF%yOO;,7z3GdR\ҳϬcx[4;gN=|ˌK8𶓑ZAdwKS)hΠ1(M cx؃uh2%,A P!ht@.=qd̑5"*ą2Æ!!,^212121212121J!n{}|xvqie`PD?.* A|(Ws0]w2o/q oj b IC?%9+0...0066==::22%%$$''"" @ T jwj+ )Zsm|U"F# ###)))...333777:::>>>AAAEEEEII8LNADmG@~JEnNNPQQQTTTWWW[[[___baaeeehkhi{iktknnnooopsr\QPK|dzvwvyyx{zywfv]|jw~˺®ѱ츿xxoԻiѲF};aTے/Փ ԓ ՠ޳6;Fș”yduvjc]cimtԬ|~丈ő̖ǔd!z7iqUyQkNbFd/hnz yn€ɗ ͣ Рݧ H*\ȰÇ#JHŋ3jȱǏ CIɍ婥˗::I͛8sɳϟ@ Řr%̣2*]ʴӧPJJfQG_&ʵׯ`ÊKլZg]˶۷p5ym˭s˷߿> È++8&NiKL4wK˜CM⺛,9ZӰc˞MH#3 NYNXAfl1NKNۜkں+nӫKi˟߳=LϿ( g ~w] 6(Ɔ ܡޑ !V($&I2l ("# b4h[ܡd4""L!vxH&9UA (bH!CHJfL1ؓLI!s\ y bi&li g!cy&*Bztw&r褔nsY馜6x)j騤ii*z:뭸Wk+qJ,&,eNJ2㗆kfWv[~+_5ȹ覫&n;oދ/n pD0 ܰ1[qro rz$/!Kdn&0,4,<%BDmC-@"4PGݴ҉)<-)'RuWVNT껩RxjՅ沫T k0e˱U~f=ҚUfskFzWs)X X viaVmc8wJ6rAl.iv;5AZڍti jUծ`u`[-NToDu/VtZ"řp}FʱzMr`ŠtZnͮ*y x/G=zG`|[Uw /_^X \&WYp' [;7̵{8l 1 Kb"uujC`0v!eg<^wب1g ٽALeK;d"G%k\=&7|O2mH`+Yo0̛05oG\g9e_hűi6SimGEn_ѶSꃴ¯&6؛Ŧľ>1+ƞ11un/,m"SIƶUƝrܿM}׃`=\o{soZpt߆ᙎ8'ߋ/9`qpINҟ)ʛܰ1OY\9zANZGV[`SԭLuZ Xuj`O[v}ivq9Yw^Aӻ{%=}_w>q5H9V>'fy۹/s \(S?G2\MleW-[ _P_W`ǗQg V^fa3MχWh7}Էy-yyz4zTztz~~tTJT ZPGPwUUKeKx<ŷqjs|idWgf\-xRaMHHS~T~8~d09(HCJN4Tu `bqWdH(W keƄMxahQ\SGUS}vf0ZH7~_H@5he9vh+:O\wn(P{ddզimKZd;x[~Q[F-`_րb6kxhvyֈ}7g(G7+ljdh^XkBD$D[ejx؋dc 8 h vMXW8HH\HB"I8Yd4fxc鸂 {cAS{hmH_=Ňhl%€ƨ"8KC}4ׇ} VgX|4_x~&1扟x4ȂYlOG$X0iSVU:ed%5fK4ԍx=Z hYyiTi(dÖLD^eV}8De |nDلFY5Hِd"}Ř),4CUx9%iKE4-<_A34&߆vœ]$S0AӞ%22# c ß#ICc퉠")à'#-C+c B.$ZO1&*(.5Ѣ0:42Z8VI5? 4Aʡ ɤ JjJjC@ZR_ڠX:aZczegiڡk%M"#) z|ڧ~T:Z*TcڨTs:Z*TکT:Z*T ڪT:Z*T ګT :Z*TʺڬΪT# :Z*TC ںڭުTS :Z*T 꺮ڮTS:Z*TگT;[+T ۰T#;[+T۱T";$[&+!{*{.T2;4[6+T:<۳>MiPu K:z:zǚ:zךߺ皮:z;{۲/ .+$˹/77?ۺ?yp K oŴ˧N B˨VƋµ˩^ ΋B˪f¶˫n ދBˬv拭·˭~ Bˮ¸˯ B̰b+ &[ 챨̳tjJۻ R;[NjZۼ b;[׋j۽ r;[狷z۾ ;[ۿ ;\<,^ rj̺;EG&#.%'S+/.13Lck7٫;.=? s+CkG.IKăO+S.UWœ[f| dL],Ʃmܺ+{ K_fǺKyl{ǎ\-,]Kȅ,ыdȋ\9m ɑKtkɗ\E}ɝ ʄ+ʣ\Qlʍʩlʔʯ\|Ʒ Ż6˿ wܴxOL,\sl0ڼ83l0|Dl0RnTVXZ.\^^`bdf^h~jlnvƨ(+|Ʈ=H<(\|#׼)/<5]|;AGy+ ,Ll7C ,LlO[ _긌m ճN;F~kmoMܔj1 =,LkI U,LlTMVA#`~ӊM؄_*>MNŐ՘`lX [Lb䤟*gO~24orOu~+={ ~MH@HDPƒ &*QD#:F=~܈`%MDIRd-]J5mę=}J EEwM>xU^Ś*U]2Ve͞EumݾHutN@2T!A (bƍ?^rdʕ-_fΝ=޼hҥMj֭]^lڵmߞn޽}޽pōr͝?_tխ_vݽ߾Rx͟+-+S޿R4u׉'(T ,D*"PA"K- bK..ګ%,F4FDC-GTGd-HtHC.I䔃I.JJC/KcK܃/L䣯L/͒M0Ν$Ο D0ϥ )O@Ϩ20ѵѷB. 03 1\1e53m$3uD55}d5 577$599(6;$;,D6=d֡L2HL14L4LM7ۄSNNAEF!IM4LYOCRI=5UylWcZi5W%_b=6Y-d=Vikm W\\xIxngxWz|طR1]qӀ]G=aN{|!gb-㌛ܘ)dENJUږAzfYm ܜ ܙr]vƊhu>Z鸜7/UQDVgu_gAg]voovq}w=#/{W>yWgzwW'x쩗~zo2_?`8@ЀD` 7f"R |%8A VЂ`5XM-u`E8BЄ' Q&"F/a e8CW uCЇT! (ЈGDbwxCHObX"ڥDE.v.L8F2Q-\a]+эo9O}<®cAv;d9E{dW@Fث'H¯ȫ#.Oq|uҕe,[vҖe.kvҗf0{ӘDf2[4әτf4KTӚf6Gtӛg8>ӜDg:˹7ӝg<۹VӞg>Vӟh@WԠEhB 4ԡhD{TԢhF+tԣiH;}Ԥ'EiJK{ԥ/iL[Ԧ7iNkeԧ?jP{ ըGEjRj4թOjTTժWjV tի_kXmլgEkZ˺lխok\ۺkծwk^JHj,`iK꒗D0L*҄4MjĬ8ɩNΪЃ{ZF?CT2~tz2uzkC_&Ŏ`=A;h{"{ܛwɞ[}C\E6<r?еn#C0^QoSधCN~iس=p8냊=w=ޣ8{+>:>#1a )}hs>+ *> ȹs?" +C?m(ss?*7Jÿ? ib8=<@oJ@c|@ߛ@V@ @ *ALAcAepAAA AA B+CBWRBcsBՃ(|=*+²B ø+ DCScCACCCCCD+DDDSD`D#|G%ÿ[DĬDĉ ŵ+ŏ;KŻ[EhiEs7d1CCśš +F9FSFHdf̿ؿK=;iljklmDn̸otpdqr,stWXYZ̾{$|d}~ļL#LHuĩ{FƃHȯH6HHcI<#I3IiCIudG<94<49T7:44:7t·`G8wxG̈zԾxN!CMM#OS?C2 SObOSܲHb()B +Pt+N L;SN#>31#UIĶD6zT0;!MX=;dmXJ ˈGHTeC]1> p}%Y\c<@㕠B6CFD.䕨FvGHnJKL䕸NY _PQ&eP^^@TVUfeTN~YZ[x]^_a&b6c敀effvg^fijkmnopq&r6sufvvw^畠yz{畐}~gX 3`v臆h~ڄZ]hFPNc;Fi;dAf?viBVVdF䛖dJWRR>V6Vnnj]faFFyhjfljlfpkpgt6ktVgxVkxg|vk|gk1`&nԇ.hVlNv9^iȖ>iEvGiMvj>v&emZj`vb^łnf>NgYn~g纶kR(輞k&luVoFlVfǖoʮ=vmNj>mfpfٞھmNp&k>nfNk~nkn.>o^~o>iNo!oiv׎ 6wgWwpܦ _ kwg'q6kV_&h~qq_q7lo oˆHo9rNr%d&orL.)'*rr(-.r_01/s3NJ4_sns7qs:ss=s?@.t 5 QRP)TX9V`IXl5sյ{556Uu66ն65Qu7㥷yWbPKyY|}y&m$ q՞ M5 Y7!]Qa^5b^"bR^b6c^c^6d^"$9YIY%iB;P_~byi)n J;mw}>ad(*ᇎ6 %hij⋞v 5hj EikЮ]{,{a^{.^c> m~tr;Sm|rL ~`Bg涇!^K/"^ 0#^².0?,@[k^|&{̆,$)- 72`{6Ins>WBHtRtJ/YNuJuV_[Z u vb?\hMe[p_$ m7JOo緶/\✸2a{GTay{۴G^z{GԺrE;vzL CEy1cS<湬^DU*Þ=8{H@/hTǴFh6S~XH0kU4^ՎbR{6V,jYkAIpwsA_􍃽0^'B/8! â{.KbxpR满b4C*t!G%!tFDEx%2qV{rd')lVbxxUf`t`DjRcA[HsAKO)c0wP%T`CO7,COC0l'~0#, S03 Sx0C,&>1Sbz: ^1c,Ӹ61bS>1,!%`hɋߒkNUn]WcN(ͦusi'7R3leX;)-A-1E3-A#-IS-3Ms-C-Q-SU-c-Y-s]--a-e3n6ZP־6p6>7~7ݒл7ݒ7ݒ?8 ޒK08ޒ P8)Dp89ޒ&?9[򏕳.Uü%9s߼%9Ѓ.;I\Ѝ~z]Wҝz?]ꭗԭz_]ֽ>{]~O;víp;~O-x;߆ +"GJa멡N !ӽ!.aա !! a "%"Yc-"#b#>"E$V"]"&.mu'"")^楢*\>~!Q-.S"/6]{bʡ0cD1F2&c{,c 3>cDD4F5V`$I`{lu7_{cR"9cD#:F:c{c"ff&xbhhXjk2k&:Ħlemmn,oepzp݂q"'K.'8:8F#u"u^gegcrgw^wge'"gf詨f{{|d}nBv%kXgm(Fn["hp6h!$r^[fZafhbr$vNf'"%ܘ2 {((U(V(*%J%.%zʥJ[q哶dFgR^gBf Zfc֜R.$&}}>dVdndF㟆ddDeJ7&j8.*a6a>bF'NOV<^jQf*n+n&gçfΞ&ƩWn~Nڪa"㫲`: bR.[F4rds:8ʤ^hMf$.fDh')+<2+):=B+JISn@r*0 k k!*I6#$ LMkN"+*l(2:)B,Rlgv*,^kTf+nV,&ʾ 4&h]&m"ثl,,99:- m)֣v2eBTBJ.v}+bjml ~mF%>4&\*"b*"----m%-&&-mnRR+gnBhjlql.֨NFtYFnZ:F B,#&*!6ch#xR&by)㦡dB^aDaim/ v$.p.o꺭_fl:bP/oD>2m+0."2/&d7W+lg ZfoQ0uGn^gkC" %1&\ OF̰ 'cd_%B}Jn.0M-Eb?Fvn~Zsk ;Fo0 g˱z7e:-@-i!2rX"qˀ"a72$_p%`'&&_3F뿎Mnwv*.Ʋfrg1)1/3Dn0+1ZF@2o.36HFq>3nqV7~2rabhqdo+ұ 2n6ovnD?p7qwp?$r/7s7wrD>DtO7uWwtdvo7wwwv0x7ywxz7{wz{Ƿ{Է}7~w}ӷ~~8x'D4?8Gx3Wdo8wxc8xĸ8xø縍D8y'4?9GyWydo9wy9p7r;;7t[[7v{{7x7|˷w{칟~:+8x{$:S?O:x{\w:8x{:#'9[9;:cﺗ9w9v9w{9/w9_w{9ow9w97z3::/O;_xkW:8zs::8z8|:_9/:G|{y';/{yG;O{߹o;{<ʫ7;~۷;< 8;;;}'G+?}_>C}#Wk+o={;ٗ=qo<ڳگ=?9=y<ü <+ =;#K;=[Ӌkw/yD~>֧w9>k>G~D߽??@ 8`D HTaC 8bE&Lt#nj9dI"?*Xn񛽟?\Kk ;{+ ; K; [{k-}KUl9:zƋm<;t+/<4j=;I諏 (؏ƺr.ܫ,ATAٴl, B 4m,TCGPjqB uqc\QH%{LA*("=I%Ԥ2U'WJ-zVK0L@24\M%9P<ܳOth͍D[}"ňJK‘\.tյ)P#L=zOmU>}7,YgUY@\s`^X67=vd\ }6?䐭EtlM>[ۖ0\e]Օ^CŗT׾&Jh 8֤U#D8ׅ&̰ьXɊ‹1V΍9٨ 9jŶD 7noinIq4oLy"F2.Z, 7pq- .äafL#͐ {4^c[[Z}P[Q;GmGy[H;^O'/4jǯ\/|̪V0sA?,tC#NG}eŔO]EgFܯtuWyG#$xɣ@?̏wzU9/|aq }s^(mK~ɱtnq ]au?yx)%Ɂj"*9ς[zZB9ȃWbD9SZxg!rX2g{ }r{݋Ga|X|D7:ӡtcUKuobGѮvrwGxoU)c^K0>/NHo0Ƃ\o&.%jO>1px<0BD/vM斯X"`0nip괏t0|ď0ԏ00lȍ6/p 0pm T+ذ cO#64p1?oESO#Z/ao0qO#v0}00 0 ok M Q1 p,° `0 pw BQqq, 1#q&/P7q,:q ?OG WbQ#\5" sz RqrMnq$( 1oq?q1.1= ر1 @W q (SRe-) s5n!1! 2"].+p5r8#e2-q,HL$p,TDZ%]R#`2&5b&ir,lu'YQ# '[1(R )KO 2*$*3qO#+Y,SP5MP,2,n-A6߲zP.Ï.R5/Ϗ/0 'Q(݆1 P#$ #s;kQ)/2rBS44O55o")5_5B66k3$-w${7.%3 X88 R9&S p's ::2;2ó<)D'0=?F>36e?Go$ R@ 48A@A494 9'v/ 3:91=D2M63U”Ǣ4Q#d>FRGNk?{~7.A8A40Ա sJJ2KP;4"< KKREs4=SL!1MSS>M{M#4-y?T.T%8u/U9 &UQ-t15; RYR-1)54Q*Y!]+U5"iF_U1VR#pju7o$s5w/{&/01$UY$&R6at)U*53!S;5[CNTGU+KTU1\m\]Q]ds$%u&u5`VY` Z'D%aaNi;S!@5T9b16c[#d1"5 DV#I6Q]g5--[_vcgkVov s*Jn}g 66 b9p[[jkcU[U 6/7teVVe2I /npnI1JQrocoV!;uZZyw}qxrj3qq+R!k%U+76]7VVOT@sr8 _rAtMWI3BOuun[YUvÐvqwa'5pհp} !*wTwyuk63$X$77O;@.tptmAu9nw:ݷ}v`WWSw7b%ii 4IjAM96 7,x5N8?ٕz ʖ$'w0R|ǷA|5}or0sRgV!vV`vC `_xZc$fm3uxɵ_?.8{-{.|x 8 =xFCKO8~˘YXR7-u W4͔5F]x75/.Y$8W%)t)54RғGt53jӔTV"XcYoVW{$9A9Y#9{8ƘVh`;A9D3NscM_\YyzY77Q 9o2 A0dmnZŊjoͧs wM{ͨ vͩMM ͪ M{ګZ:&/zٺZ:麮:7m;;z ; {!;%ϬЦ /[L-?;C{9;̴Y,O[SmYZ]w[=[:Ww ]"];{]"]BȻћ]bػ᛽]軾]; <]<|!](-1]8=A]"HMQG\ٙ|,}\گ]<ۛmǝܥ{y^5݅^}!]}]>5#ߩ>MM5B-1^{=G<5Y~c^ݼgE8 }]~я#]ޗ5=}9C>E_^Oa}]?%מ}KQ^?i>ɝ!%ѻ->+?_AAKIQ¹~WcAeimbH… :TX`d+ZbDy2HSSW6֯m ZH[uX]}-_=XaMe]h{n8Ziއ"ZV[\b%Gcr=sMB]dEyҐDxJDyNĞ{'Q]y|O'}ޗG [di{ i{ީb瞔u("i &{*.*1裼Xcʱc#? G$%M>iU=eMm%T^)Vvu&f+p)'J})ٴf( mg"j".kYfiԱj̽xd#*F[V;j"{.ج^$Wbg߂{ clk}ZoFz ӪTQWyp /LU?^ Xl`=,{|u`І\'c(g۲,m0&+✳<-4CD}QDZL6M-%!,߭Xgk@uh^gϕq DvGfܪ<|~Zφn͛K5E>Dc"a{+>eJRW/p]/g^ٳ' ➻Iw  iK:y࣢'=Pz1i{ KHi2ԷY0k_Rޗmu;nm' #]~WIDrcA,w6$"vX$s-tfCjX!t1҇ "HmJ|[#IC{˛?@EatQ'[A2a ظ=8( ;B=EDhnua~h,3!"]?FБ$yKzHb'3.6pdpBIFRVϔC%T$VЕュhi%P6}H R$!ۂ!v3$Ol5ek&/ڴ 7sMHQ)4s Sع9wz@a)Si~- ڶpj/ E+Q\f̠GRy^$%IRi.IY S\N%7  LEƌO7T wD-ԕo}cD7)̋_CUwweS[UWM(JsI%yγ-KwOє~%/CXukx$*m{$$N&!$ԉn rtf<$5K꾼4vv;zJKӺOMkZOkmﺬ:kpݞ\O 45D\iLSC$bd.LfylV3\f7rs%bg:9w?΂N C#z̄Ft hAGϓs|i;gzΛֳmOZ%f7{9a _ Xzִo\z׼ ` {.Wbn hK{Ԯl#\ p{.ύtߐ۹T x{gl]y |VcZ\TԦ5>S;Z␦-Ni[Z渦=i{: MpC+?sD;('~)N1~ }?W0+}GW0K}Ow:կNub\׿u}`W Ύ}gW !}ow;Nwb|w~W!+~W!K~W".k~W #>Ћ~WI#Nԫ~7=_zbo?{b{W鎯N(oNHԯk**z n'љ[:{}agovl'lgwxguGx xhxGxgyǁyzG%{+{G|/|3h|LJ5|9|ٷ}=}A}GW~v~Ho~MtQt7Uu[Xv1avwGe8w kwXqx쑁uy؁yy}z#z*Ȃ{28/肋X|a7:HǃA}7EmKMRWRNJu]^'u(axhwȋ(nHxm(|rXhuz؁}8zH&(舾Ǎ{5\Hԇx+af~G菱HI iȐ ًXo(wLjHȌzx$I+ + 8SQ昃Ȏ6D6_VꇏH HLi Ayxȑ|(!h)y{.ٍr0Q14|8|:דFwC)thIX蔳8^Qvɋ8Y_ 'c)yhi)zm'xpɂtIx29zY@ȎE8VKxE٘(I)Y٩))Y)醢9P y zYIoI0؟{9َiѩtY m7TI ȕZkٞy0 {8*q,{I|vyYwBh**z:YytZZjz 9cXy٢`)YY<ڣ'ק(*FzKꃆڃ餘^SKi & Iw׉_k˶)ۙtˢqǪcHJz-,i14YN[ǩ0 +^1 yMO驟ڶrX]i{vˑ zzK*kћѴ {P0]{kKl;;;(̲sz[y|۷+ŋ≠Ḟp׋0h[̝g !*j(+wȿ [68:lv<\{ŊL\+JP<Ωkٺ]WIUp*Xc-efMgihkmֶ0t-vu]ר}-ׁׂ ؃`؉؝` V،ؑ ٓؕ-ٖMٗٙ٘ٛٝ ڑMk}aکګ}ڭڮگ-۱M۰m۳}۵۪|ۿԐ `mmǍɭ SU M&Ս٭ -m޸v -Mm .Vnȝ . nZ#~N')+-1o&.5n79;>l0?Nm4CNEnGI&MQ.SNUVY]z_a~nK._eikm^+dS~qNunwpzH>ن]؁N؃.~}c^~d]}m額}隞٠`W2n꨾n!!2, a!A!%R%(b(*u*,,..0000111111111111111111111111111111111111111111111111111111111111111111111111111111111111222222222222222222222222222222222222333344557788;;==AADwDGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~}yuqnkifdc^[YXXY\`fnqv{eH 2(Ȑ† Fbćflq+8dI%AzTD I͛8sɳϟ@ JѣH*]ʴӧPJ*Ud#Ago]C qױ_7EKqn" WAzwwuBfo[ o<_\aXȗv`ݱ"O23?45A57B79C:;E=>G@AJDELHHOLLRPQUUUYZZ]``afffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~?H*\ȰB)JHERDȱGRiHɃRxK)U|I8WC̜3{ =_?qA*>|ޒ.:1S|mW)fuڗ;_>9qϤkPz~E.ݿ>rRJd,}hĀ V0!mhFW6-bZװc˞M۸sͻ Nȓ+_μУKNسkνyOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($Z'ˉ ?R8-hc7Θc8މ.Ȣw!!2, .11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122112222222222222222222222222222222222222233334455586;7>5{@4jA4\C5PE6FI9FNKZ@QaBWiAZn?]u=a~}?}@}DGKR]ir|eH*-QD(Y cz6%yǒd^VҠJ| kWVlѬIPeNx*ZC 43$^MFJdH(v9*u`WP,Kk٩8ɸ O|"=+Jbt߲TIRaq*e:v+Ѯ"}z*GEjg5G t VQ6;6Kԧ}-h^У;v~^{9qO;҇mkGߛ}o֜{_6y}ǟT  AHj8 |Ha"nV,X"'v8+a5M"@$Eft"12٣D69$0xc -H)eTb UN$Ax9Foiaҙ'kriYjfhڦY&& 靌*Jv*瘎)朂CΩؤ4j9X !5v9$RJ"8 j묵ޚkkN[hȒj++".ꭲdh축;ڻ)o/p7zzr:qPb>5- V0 qP3L<)bƬ22C37R0Ri6=$41;=H1Xm0Hq)NR PH[S>@!0Pt}P1X@14q )LaF`.=Szm c,@.:d ^ꬿ갷p0:ArĊ/O>║آZ2d&qQE(ycRԤ+!L!Q1p #3(X T`' 3Ʌ8 )b!@%@.▾D)KeL,iNЌD1!Q5 mr1q7 =!!,! L222211111122111111111111111122111111111111112211111111111111112211111111111111111122111111111111221122222222222222222222222207.=-B+G*L)P&X%_#f!}k vpotiyd}a]U{RyS}XXXXXXXXYYYYYYYYY\ ^#`%b(d+e-f0g3h7hͺuԛM$ѫkMZшeN|uU /μo͸79pԳW?<6e[[W=㽟__:}=8|'\6`( } FӃVfvHX"&*h.h2Hc)ވc:b>vdIdFaJ2d> RN_Vemz^~i^b!jd ƹF/|≝ YiΡT:'BTji? ^i)~Zi<<gij@]|Juz¢h;kX5;㰪YKms^l}}umq*(Õml碻^W/r mNkﺸlͦD/h{+AqŭѺi,){4,$3g*2/<3u]*7;qa tB\Ft۝@<3OTԧa+Wc յמIXfVjKvP Sr ]6mY~70lx]];8j+>9ڕ_Xk`z7ܤ~MO ;:DwrFvmFG̟G/Wogw/o觯/o HL:'H Z̠7z GH(L W0 gH8̡w@ H"HL&:PH*ZX̢.z` H2hL6pHC w@GG|cI@r,$"F&򑌄d#C"JFĤ%3M&r c[&Q2<*U.|,Y2*.}]2'0MaL&Jf:ΌBVzRd6nr 7 q3!!,*47/#֞֓vG=DUN`Zq^mafdggksnkg_? %,1*HԸT\hkdgs~zqp{~ڇ㉇|wޯtͿuͻĥ³̼бޯϰԙ݆޲̸ƾzvo݉jׁjnmRJ?,̤ ߊ,y9m9a5H222121212121QpuZ4d i#e,[GXU_w_giglllnnnrrrvvvyyy|}}v}j}b~eowz~ކ쎕݂폿Ж̭͜|tmixZ~NgAeZH118;9T4_4`7t~?bEPOU]k```]]]YYYUUURRRNNNIIIEEEAAA===999666222../)))%%%1il/ HAV:Ȱ! JqŊ%bp#ǃ? )’ OrɄ.Ie͒7Ecό?/ttbQCWuӧP<@իX><9ׯ`v SYdf]6-lpʝK[x Lˆ NpE#KLʘ1_9~CMҨKNtE|c˞MڸqǻyN<[{ȓ+_ЛGةO=[zO˻Ǿ٧J~E=߀new`_5X*VQmg^cfZk}jm*8\q0 WQ4>ݍUuv(yi^EF&^|L7}PFĀYV^)TU`ƕd5!Af`jONgqH%zgآn ۋ4hٸ#t>\BrGi$znJޒM*_J5emU%}fe`Ym+R8睿lYǚ(-32h6^AbjifK{jWeW;Waz+g)X"&; BܚCV+I[{Ҷi rr I&{ҹrx$nZj/:|/8|V/7t IwRpgSc'I|XvRŴ]l]m# r&n/r2GsPތs*AJ4]64ie?^\wuc-j3c붷c*Kwݍw}zk ^Wᆛy+.0Bx/u֙z oSǿh钒hꕢ?/Ӻ>5oW\ 3x[*@UXDVuEwHd#~4BoS'TRg7/hU_z3тǗxn`<%PrH$y &N|B)Rb_cAuF%N}q[! cBwPheXhh/Jp9F '7QWU5HaX|X"#ȉUP{Ta4|1:Rf1zs%Ը1J#ʿ-p8ZWLX.ˆ5rkMtII=l81P9 &9y2P:)4R6?NI%dr$o<s8rxB)O&yZ> s4XCec4ӶеTLx2R&8_;gKveTz0*m;a=(F1~%jcV,3;PtdD4\')%۵:X KDK+q -:< JNӏg$SBՐNWcA6س|=_RSNu)KѧTUW5x iEZzmf95V)U۔R -{+^=-ZGeIJ}|V7e}[X? O!9`c.@ rd0>uOV݄:eĺ׍R51K~7) j2f1o7ٖu}[(L!#\D4%IFkҚ׬GcYYԌۅevټ0d1kx0h>o{ռf3ͬumi\ 9yyV.oi٠G`}4QN_w=W!v-8VݡZB֬6s9oAXg8lFۑ栯XPB%[p$ +jݶBOO%7+CZssVoi] Y۹޸J}ϔ5MӀt=+ ^8!}IWs!=Cqj3rv&n9۵絅mmn>|_ X 5BgLbD<'kW<YֱDԗǜ4wm8ANT@P`Rz_ }JlOH=QwU5;̲>KZ0)WB}S?!}뇿/k?FOϿ7y'x ؀8D[|؁ "8RaG(*,؂.0F&1X6x8:;EiBLSYy[ ٘YbyiXَp)̹axٗ 9ԙyQ޹yWvL𩈞XiY)H隯yZOyWyɛ9^yiyވɹڡly9tiy({y㙘i޶ٞ2Y@yFzٟLڤz:PYVj٠JaP #%ju,J)/ 1*I5|;NᣒDʈJPJzSNjN_jNAָJNaNxʎNr N 9ĊN|N7ڒ0٨ ꨓJ𭔚䪩کI):jTxZد;Ыuij ڬЊҊwP,yZݺ'K+z/ 骮jYZZͨ JZ ˰+J[[+"$[AٲGʶM 948kw:س>B˪KFkJ L۴PTKˢV{Z\۵#zcۇekɺ) Iuۊy[{˷ۛ{;ۡɛۏ{! @ˇkk狓˙+k[˚˻ë |kK ܗ׋ڻkb;zXf54پ<);CiB9u{NM|]I\9dcykjzIy;[{,\ ,U$Y܉(]*L.c܋026k:lo\>,s@ܴB F{ܐH|JLܵNRKW숍܈[_l\aeg,i\mܪMq,uMa΋y̰}\M!KPS̨M8ɒZMQɝɡZl\ ʳʰ| w:ZW{̈̋hЏ ̗8ͣЛ |MM_Zѧ ʭ܎'<8rz ӻ M Д'L>ͼЕ \֌Sz\ шZEϾ&*5|5ӃJ?ȋ,BͭDF-H=L]Jm=Ѯ*J jշՐG+ن IkK,} fjln-p=r@ݞyͲ mغ-l[ = 1 b M iڽ[,N a~3nm5ȭ  qˎ21~>~~}~>}~~N~Gn /Oo!/'O)_+/O3o579;=?/A1CEOIKoMOQOS] ~<_X>/aO@oeBiDH/_ G_&mOqo^~~?>Gxz?/o/_O~_2_FOJNRVc݃؟ڿܿ~M>n _Ona ?nq qK@TBXI4 >`…-F 4=~1%KdLJ-]DRLlęSM|TϞCELRM*MTSˬ^ŚUժ[nELXe͊ {VYܾW[śWݺ{EyL`… |X ?Nʕ-ϑ#BV=3VMF4iխU[lڵc,[ALv΍p‰GiR˗ǜ}%tkľQD{wuxɟU=ݧ]mo?_|{0D7ll$6cB4 %d5 WB aCp.[@7㎻D1͹Zt$ꪣ7-;qmEbFDAƖutw R(:r*#;]&uT(r-)S+˼b.1,V\K&K5kM74dŐ_"S=98=qKS z\rXz~{y^(zŨ7Qz"*MIRܡd|-Xj܍!0ec5MoSg>)3s5RԤ*R#:Tk9`Їլj W6o3kAR;uGbn%wm^ =uL` ؟U+Ucز<_ tZ0c {X4ֱA #;l MSn_JUN:I,ⴶb'j9y& f83z7/z<'3'Vz7{o_>g|ܷ?#3ùڽ?|>?>? @߻s +?˿$[?@L2> B,B;<AtC<\CClC|C DD8lDF CDItDKDBTGdMAAPz4J,E N4BLP@N!JB"6bFkU%.&vbb)N*+`FN Y/v 1^`0Dce\eτc|Ҥ֜eִcced 4(+OBdUd$`G6HN`/"b+l^0`Q~SLpTVHsXIuZfIw^[]Jz_^J|FaJ~c~def^gvhiLM Nho&g$gEgv} %HZdgg|}}ǘag5!J}>JJn0[4!5EhVfh1tKbO`PGǏFא~H~W>i(HiymiڴviyښI&؛i>[i} #ˣvۤݥݦ&çVµjmJ cqh} 6HnH.i(k&^,}阆IIZZ.ʽXE>[XXÎ[Ħ[6C Ƕ^Nˆ\lme=t~u&8oVXZkk6ۿ 6VNVXYJf1lG7W΍ ϭMmv~mmV]g]&[w]N[oAofg=D.fnj^^nw /_$_ ?_&O Wmw 1q5qrUqreE`pGvHdVprr&0r>kv ^kpp*ȸr._I0_K1o/Gls8;/cT?Bttm4PQQBR8wn?pUGengVWeW'iXYW9N:;^tJr,.AwaNCwc^D~ 3gOsiI[l,k?u(eSqrw%wss^wZx[nw\~w y v.>wbN~wdnwexhv4m-\i+1 `.޼ze/0Ċ1Ȓ'?2̚7_3ТGL41VnfӮmv/n3oSn sƓ/oeֳotӯo?~}I3 x}Y :}]1!Zx B!sHKT%NWW)Y-W\1^5a9hc=2eARfgErfjIfMɆ )Iiɇ j!Z!(bH"DRejŢEޅƣ6fFFvdI"YkjVEkkSVknVe9lo[vylrVlsclvV9mwkymzVŹm{sm~V9n{ynV!K>hKo$D ホ&hj)v jj# Fފhs ړ+U^I".,eIbn-uIg6m2ً UK:0*|V)) hĦJ:O}xb_T?-H~#E_KH@ 1A@ ! N$ H0Al4LA6%4oP㬐q C~5< q>=%~F<* %ꯉ_(Vq+bYŷ,Ћyq`A2*gը7q[C:xX>9 duII"F瑐$'Y M~9INjO(BRf唨*WٖV.%`fIKɥ.1ˏ-c jII2f.М4jZsSJOTj? PtjB$**1ẕ*<+4:͵Z|+7͹39] Ӊ= `KEEŧ..՟`tj@UMU6I1[G⑳{AH4"QHB-`InCr4*Jƒt-!K뢆.;Bл)/ Bм5D/ջCнA/{D/tL'["(`/8&#Ϩ`5:4E>H  ?ҳp0= op@L>3qX Osq'aWxs3\!cȢd09oN&eQpVFeq9r^/gfs."y_ƻP}[WI%nqz\>Ujs[UFm#(AǠ%;4E1{4"}I=42=O[I}yJjwnvc'gvv{gyx=8AX&lf9ZЦEmnY\&nBID-n6YK7ve7潶z7~C$M:Hpi8@RD} !")^q ]&ߩm}r{` ?Fb(-򌹼2*H&jO$5ZIIͳdy@SU SӡPc=g-uMScUMuvUUkBݗ;iC,Ky4 M<5Ooy;e_vv.nwg>xnz3U ~wܾ{;uv?Cafa ! ~GDDG4B<"$ZDLb$V%R"#f&>' $fb(Z(Nb)B)6b*z*nD+f&~+V,rD,rb-:-.b//b00"ƽب'D.~D13&.c32D5J4b46b6b778b99 c::c;B;J'jcKa22b8:>d?cBBcCCcDD@5^AZcArFbcEcHEfAt$H$JjHJ~$K?" @d'ʤNJ$LdK"NRcO$OQ%R2cQ2RSbdSBePzdUQ^eLfPL %A0!N:VeWcZ&W?¥B%CҥC%DD%EEr%`*e[Kd\>;$9BQ<&dFdN&eVe^&fffn&gvJdbƂh04"j&kfj5Ħl&mfln&ofnp'qgp$r.'s6gr  &Tu^'vfgutw~'xgwEy'zgy{'|g{5ԧ}'~g}'h(&h4>(Fh1T^(fhhv~(vh_(h_(h_$֨(h_(h_)i_T6>)2TܒFFi_j)|ӄ%eY&l&lڦ&n&p'r::'t.tujj'w'y'{ʧ'}ꧣ' (**(JJ(jj(舦ƨ樫&&i^J$_f陞ia"b2cŰU)f)U)g)>8韖vZŠw꡶zZŢ{6~ZŤVZŦvZŨ&6ZŪFVZŬfvZԯ, krih沢fʪ,XD+Nkif+nkiN+&+F+f,짆&,:쩦F,Zƪf,z쭖:Ȟ-Eʬ}i˖i޶fZEv~S-"U(2m*B-RUXbmjr-"ׂUÒm٪٢-bڲU֭-&oܢlfı&;,ij]%/kBkH.bkH4. kH\nkHtnkHnkHnlHn†6lHnĎjHnƆvlHmzۻD?iHHji>oIhjRobjizo$I/ **Ư/Jޯj*/*'p.0˪?Z7)Hf:X)1D 0Hp 0H /% 0H0H01H'1H,1?1HDW1H\1*w1~1#qJ,pYH1 1m0 1q3' 3 _ 2v0"/2z#gG2~1%_2*&Chw2B1(Z)h2++213-kp..q/ls00p1+g22/^3;uBs4{4SyZ5g6k}rs778;h9s:w:s;h<3s==33FA1BϦB/44CDGLtV4]2F_Fo4tGwH4ISIJK44LLt,ԴMN4OOP#uu&?+2i:5.CuTT/U;tVG4WWXuuFGuH5II˵JuK5LLMvN<v=#6>+29,/'Nvr;e'S5CU?tkD2 26iv46556v7688Ӷ9v:6;;v*6++ w7:-#Sc$dAGuffsggww5x#x/2y;yG2zSz_2{k{w2||2}}k1~w~1CC3@ xe9_A8B<7fGtW5uW7V_7vov/݄`cpp q#/q;GqS_q'3p?j+ߍd/87?GT;ooooppnj ﳎ rx/e_60{z!&.z6:>FNzV:^fnzv:~چێ:[i읇p_Ccoo{; CvF2Ys"G7Z4$uIO2\%Jg]4'uL2_Ӵ(M`4*S~lYbck.sz~~>*9v>;c/뿯/ #0;/*1@T(JA&,8p !FaE˽IHGa?"Vb'OZeK/WZ3fM7gZ4gO?wZ3hQGZiSOZ6jUWZĴkW_Z3lYgZ첖m[oZ1n]wZo_Z2paÇ[s,iNjSH&P;3-3?M35Gm7O39-t.W3V=[UI+Z UP^P`5D1҈G||/Ko4WhXO5[Q%[SE5\UeuZWUhMWum\Y\[^u`ehgGEa-vc6bm'bo/7cq7&cs}ڏ%ސM啩YݖSfeh`f 'g+_߅g~cxhh~%b-c5ƚo%iȚ.N[n[[?g%"&`J|~9 B~D;;RJS4I}*Ij4 4JP, Uҕd)8Z ʥw&1iLeN+"3LhJ3kf5MTr|8GrӜ ٹNw u`yGFr?/Ɂ d(P>(E-JX"+DQ}!)ZHZ+2lKW1e)MH͛t=fcSBj@3JeS9VFUgU S[dW ʄU z*bjU2(]kJK4 q]':"zE:LVuӥ.,RfZѴbi6O]E(M\v9-uZm c"էEVOVA-B[n#jVm]p 'Mr{:Ѝn{]ӥX.]4~l,ympc7w\/{1$}{H7xݯ#_I805i{2 `RneH0bXsa8e1/g3u]bXƾq*:<~ d y+$u e)3UA-o]2 ;}[1e63Ѭ5_v%tsZ*gyϟ3`@ v.4h1ڱHK|4.iizS? jz ,%Tkpլ_w;tִo\/kv,1l1ٝJ?iS[v־my[,&mq{>ҭn<-oһ7!}c!Ÿ!Å`v?w(!oqC1Ƒ'O]ͼ19m~=".tHWқtG1ձ9N>lz1ȱ͢vq8wjw{8='w=xuݕaz7ߏw=7xybkG2 go"_^д/_z% *M06@MFLR XM^ h nM@"ag x`.TOXoou^*jd jGz LC L "48YHx K/kO,S kipvlpx*ǔ Kߋ C  L   pº$E| IL OGW 0pyj*"/ 5K;A"nqѵ 1$,!{kcl*E bfnqPxq|Ѩ1K+j*ê1QxQb؏!*BV#=]1Qњ1ꑜ!q*H   !&"aTb"ϯ"@Q A#QJһ*B'%2uz^*g&"z~R r2r|R*b6H("nr){)#ʐ"+*K* +"$E!^*z$k%w3,Βb*B&"qr.."n*F(5_b0Ңs SŢF28ƒ!P%b4e"h.|NؒXS6gs'y2rs|s8 0_8Ko#=n: A:.35sw@&D,K3R-<-r=S6isR/3>/2)0*pf*B*R09H22sƾ,g;;[2t|ʓRS5'= 8_D6o33v7C>LK lF]?Fh$B0B>>t>B`$CGlDNC CDUDDDE"UE&EPN+uF6F6S/5F:NF)E_cVdUVi&VmuV[drddhvUezi~a F!9F^hYhiUi5jujjj5kcip[Yf0f]Q5_R]5^UUUoWUWWUXXUZUfZVbj7>cY`Ubbbc`Uccu\AV_G_Edfj`\eae3aP_K`kV`o`w`sZ{cvbbb6cvcWi6jvjjj6kvkk lvlɶlÖt mvmٶmӖtv nvnnt!ovootֆt`p p ptD`qqqtB`r)r-r't>`s9s=s7tatItMtGt8`uYu]uWWuawvat4vq7wuwwotw7xwxtJx7ywytTy7zwztRz7{w{x{ta|ɷ||Ǘt`}ٷ}}חt`~~~t`t` tata)-'ta9=7lͶm6no6pFpWq!w!Wr11WsAwAWtQQWviwcAmww}xx|yz؋{Ř{xW|7W}᷍W~7WX8X!!X181XAAX醄MxϖATז]xAdƆqAx8ׇ3A8;׈S׉x8kAsxAxzx{}ϘAԸ˗8A业뗎8A 8#A+ 9CoM!%]15m8ٓqXE9IٔXU9YٕxiuzY7quYyyy-YYY͹Y 禝9A虒c8f9AAڔ :a١:m9%A(?K 5AZG:KڤߘSZ٥_:cZkڦY禧"-b'"f;":-"K":-["uIY"-bw"zy-""ژa;"⺙-"-B"-"-°iۄS!%{c-1;wx9=8EO9Q[W[[۵8uxgضo[{y{㸸;x9m{붻o;wq/7sٻOWKǻ{wwu{zKO>SW[^_cg~ksv~vw{ȋ|ȇ{ɓʗ~ʛʟ>ˣ˧˫^̯ó~޻>Þ^Ͼv7u۾y޿>G_+bw<%|+17<{!';-{39?;EM"{u?CߵS_yKOW[[ZZV:… :T0É#Ԁ1ƍ1Z.ȑ$KX"ʕ,["̙4k"Ν<{D2ˏ=4iя~:} 5jӏ{Z5kՏ|z 6l׏ʚ=6mُں} 7nۏڽ7oݏ 8pߏ >PŌ;Vыɔ+[q͜;{qѤK8u1[~ Gk۾{ ċ?ǂ̛H1:CҥGܹ EB*}Rjbɪ[r (]z_-(j>XcJe^g~iaF"bnbp%cr9GsUgݍ8Rt]v>f]wB{CW^2^?Yd$xGRчSVWHZ["^1_"фv2Vzbfц~rᇂF%ډ).E->ۋ1NE5^*u;VA)dQJ2dz*^DU*_Xn%~ e(`h& gl{^~:ʪh2⊐>*)1Έ)z:].jYDꐯšڪzPҔWk~_ګE[lo"s2{bاZT#-r߂k[ns.GkҼkM˓QoR c+)0g:L u, "vjqez!![ va%z2ʷy-<1;g3}{s3IF t4 MNtG-ʹ=ROQVGumm^ݶbOHvٓvgԮ]Zꄽ]brFwݿq0Mߛc{o=/H*^㍧xxKneD|9G~z~Vá9:Gt;Dߏ  ? Ѐ \`#"$;  0d/A 0#t` xB+` b02|l(p3~ qAD51L'BR"hE!b1ND/cbx)klb/I#("1?#G?^yaǃ \ )GAb$-iFLQj$=FP±EYGTޑ4e"+G2, YA2! KW2f{y]VRdf&IhvRf(9Jb &7MlRf+yLrҜT.ى_~$;}Ye泙|f?ifAIτ<8ZNnɄ:%zNvs<j̆b}HYR|Ԟ)JR~ԟ3hMzSԠO Ԡ uD-QԤ*uLmSEHuTU b\Wլ0d-YϊVLЇ[ ׸խke׼uw$TW)v-a[ihc 6Ye/VfJЊv-mh뚃Ԫvmmjjvml뺏vmnJ w-np**wmnrJwԭntkZw v-sZwmoz }ַ (x?U|պukZ/|u+_?a1=Xzmd9o21hMcӢֵqK:җeO1?-jRyȨ>Yd-lB0 la7W/]ld+[lvv-OiO;v CۀC Aq#^ѽuwݭizq-dS8pQ<zo+Cx^cus#,G^>:2a<f ox~DH?#K?GDzu;~$7_G^쏘=I{v/Lox*[[6c?Ǒ<)_y"_H6 G7=l?_2~iی{wU{_{V'|rE|ŷW'sɧ|||Y'}xׇ}}Z}~[G~~~^-yz8z` XUX]uhV pՀW(n8UsXhx^o"Z$Xu([*eQT7 74]qp:u|Xq<؃@_B8VF8UH[LHVNnRxWTxhVxh\X`nib8UfZhl[nWwvx]k~(q(l5_x؈8h8bRЉH5fȊ(苯T[&bFxȨ،I(LHOhR؍\82V1Vcxfil؎oxM6QVPVx8L_֒^֏8FXx ؐW2x"ؑ%(+uڕٕ4x=8@XCxדb3XYKyxQ}gHZO}Q}S~UI~_\[i]y嘜g^c^egik{mvo)wqYwswu1w|y!G|~YxIeǘw%uG]ʼnzgň_9{i{virrrr,}189xyY)iZtttΩ\)]~ɜ9噰fiǝ#&FfɍssYY(j}YYtoo p * 8ڕg z zi7Wvx|֡c)b릢[ʢ&F֣~iʜg)@B: PvΖtpgxVOjwaz5Sxi|X\]J_ ja:yUgk:ꦕ !>v:yJ{֧mgUM:w1qyg{w!ը&A+JI yъ5gH\zlڦ;JzZ J; jvθ\F I薬zZdZdd~j*7z}h`f{:PǫVj|*w*;:Ypc }ک凱jʦujq:v:fiugW4[s6 (8гڔG*[+~٪%MK0h*ױX2"_$ DCp8TAA??{?A4AC:C+k "$Ժ&(*4,T.t04A 79S;PR5Q NKռżћ{QқQʛN+RKRkR܋R ,*50u246վ8:<5; +[.;[( l L,O̾ , L"llL{ , ׋1L.|<\|!#,OO Q,SLUlWYLLVW a,cL`\W܀ikh\W(q,sLp\W,y{x\W-ȁ,ȃLȀ\W'ȉȋȈ\WܣuLɕlɗP1Vn\M8fd=]Tmp^r>]vx!|^~)3Ӊ荾ӏ?NnG홾ԞRnդ^Z}ժb갞ֲ>o]}NƺlN|>M^|U?2lͭZsa%N9l:s PA7BUtmRIWlJ3U8NTyRMTۈU%]}ռdZu׃q vd5X#vfh7Vjl9$n7Vp5rYt׵yv9}Ew|UݗWXuJ˩\a~*Ϝ⳺>zc=Z>E#eU^\F]>c;fo7ݙg٠z~ߢ/Z鐔^ ꨯo.?=׍OHY4%Ys%Zm~{=%o{͝pG9'qLJ$:&#/g)`գsDׄ'W3b4_7Klvs$&dg2C:hZG1y2\$QF^=H{4r|\9ajqV0I5IFf 0{`n +aP5|`ۀpz"?" 1G@$h7@<hE`[ 1 d85m$a GqucǥQs~ K-M1$E&K$#yIEmST`0yM\dC)FR6ϔhLVi7^eh9[ҥx5`"#dez% $LA3L%͸mS<71ξӃ7ѽt7-zwՍpx ׼.z{!!X,.ESILb.j#t|` UR/P8G1=12'p+H4-778;;;@@AEEEIIINNORRRVVVZZZ```gggnnntttwxxsyg{gelw{~~|}r}f}emgfx]PYp{Ďɒ̞̬̲̻{riK:530'wQ &&1112122222:`=t:|$ی Ӣ'=ͼLRd䐁܅폗矲ǹ꼿壾ؚ{lf[ػO -Nlxpli~sard{`mY]VkE|@ۀ5 މSA5  !g& %s0a4a6`9kAv;a@ ScMls, %2cO[VܤJ};{_7FxI+ZӈK=uO[sjyz}6PeC9gMْ)ߢ~.wa X7Z!44o?a'|+Z?O=_|}gӏ߽ڳ՗o~G_?7?<ެ:t `"H c`1 r #(>& CRHAЅ) e8BІġu<`CJFd[$.M4D.V>]|ac8gasWOF!֑q*1[G'?r1^<$!)FJђf$5FNѓn%(GIQvD%IGS~t% KJBҐD-I.RB#w^D%Ifnҙ'Jj2|%6Jnrथ7mVfs. rt'.Kyg1Mq3\f@9g46 !o"E 8>z4>ϣ-@HDAj?ϥ)L:@i!:RNewטHMRzT0OM JժZS ծz[ Jֲc ֶkU+\ Wxͫ^zW|M K :U,d' Yಘͬf7{Yr FKҚMVֺU-lg [මͭnw{[ p[Mr{\2̅KZӅzۅ K/z׋^3*TTҗRŪ~UbE*W89 5`KaJk2aςÝ} G,ZԚcض1o}K׹qs_K@ƮvKd𪗽HNkdJ}+)G5rU.5sY ๒oep5usb7a _Ε?=5'tiSЯq+I/Atv_SNwL^/C}^'GʩU+5Z29gFs[sk̀m3 g9Wxv,>Y~6fK,@ѭ6Y F{Ɛ~t-q{ǀѴN}7lj٠5vu}}&Z5 [:N3kx^ml әʾ8ƛgiC6mo;&?y_mF;56eNnLn7=oû޳ioke[ g"Z8i@v;qK$GqUm}n_wo~ݜ>'uC t{ Ft ]u^W^~xuV=li7zl+Z{#s_/kdKw/xwPV?e73y_/}7w5}a3SO#~=s+G7Ct^Ȝ{FF|Go Qw|!t|TowU'}W}iuR} uX}k}G~Fvf~!~$6rzkvb,7hgwyc}]dX  P|XwȁF'^g兓 &|Ƃ-~/r1bG:P:&9w>Cd{dGofLxe8[tURX}VHWhfZyy~qYdZׂkbH[mHp8{t]Hi=xԕ؇셋 XtxtXȈc uUwu`g!X엊'׊uѕg>hUNjR6 AU8yΨpQulƐ ƅ%؍yzX[z3膸0\w8|eX؏j%LWOwn%V[GlXwG5%g肀vՑ(w"hq8)&\+{-s/i^mG xTtY+SU+f V9+qwuLYX+ቌi+q7PWYZ+ՙ_[+!µeY+AյA]+!5+&Bwțzɗ}U dU UGɜ[ǘ9X 鉘ɍZo'i)ך9]e2)曃<)Y))upΉu *qչqy~rɝvr9i;'Ǟ]Y+Z|djo3j ڗjp=k pA:l ژqGlqK*mzrQmj$j{Yzn&(-*|a:o/^1 e5jije7J9:; ?ksfC lwfEʔIl}gMlgOzSmhU*Wj[Jnji]J_ c oJje^6ɏuKG Ɍ Y9gP(Xvfx\Z w 1oh ze|3IGuIx; Jkzk:u 13l Y6Hg܉z!$nƪh{zsij Al 8yĸ^֭b㪪g 6*zvzv 9`֯)Z =gӊ (MiJ˱zuG &Nv%[zU{z'k~[*0+n:sc[snuQ{RRS;S}[S{SSS*SST Kk˷ PDONMMNNۺDdPĻ P+PKPkP͋PϫP[{{{|+[뽮+ Kk ̛N˾+΋Ы˿;[ k[ < \̽K +K(|O ( Ä+ÆKÈ~{%eÌÊÐr ĔÎKĘkĖ;ĚĜ Ş+ŠKŢ+/l13|m`b<_ d|g ڰlnkp

m~1q6u>8@BOmHkh=qn}ˍׯ"]دcNagih~&>*^oNsٱԟM|砝zX߮뾞߯]=T~NƌP^} כ~ҝM걼AӀө~>ٙmK~?G4JOtiQnlu}/ɚ._^b\+-/o3_15o<:o>Aoy_EoƾLoP_M@íێ[]_Oa/^ig_k̡q9~uOw{ϱn?^L Qo퀱ٞ 1\~(+< 7o<< Ϥ~o-M@bAB >\P!D%"QF3^BMH%M9MJ-])ML5mMN=}LPE zTQ͜>UӦSNyNV]jUW̞EVٲkݮN\uN^}W_ FXa?Yc-_ƜfΝ=  FZӦYf l/MdE w O?1o>I^GzWS]|ر^4[l/|‹/nl2'ˬ@A4;F\$DB - hrAMDz3ĊD$ōDD.FDdFD.GDGD; \JD3ȫDL<&KDړrʷD/KD?.LDL/L50BTP 9tp E$D-E!OXtEeFmQGy!OnT aX ΐ5r( 0, /uNRSK"DS1JQ&IYapؠ%5AÓe(EIҔ,)UI\rt)aKQΒ-Y ]ֲ/ %2oLZ23t%4_)aJS<%6eIM`j7}Ii 1g$r;#Ny3B z3'@)zT}'B٩t2Ԝ$D(QR?9ЍhBYj:CЕ6}iDc:љVBISΓ*)Gѡ"=*Kҥ´2}*MjөT#U Ԝft*<ӮdjY}:VlZ*WըvE*^Wթ~*`*X֪^uk\Z6pdb# Y{RaXZ1afXѾqZOεu}]Iؒ6y^s`[lq7k[7g(L^SW%f;c3]&x)g7fuzh&|)m}qӺ{N^ Fp~0H0a W0Haw0H0b'1Hb/^1H1c71Hc?1Hb0d"G2Hd&7O^;#8==s=:X>KWk> >>0>s<6 96;K?<{-?3?5B B @\4,I;@4[@k@; V;> 8,Œ@@a@,$lStAB+̼c@̲AD?8+¬kD;¯KB%L4&lB(=B*=,2+-[E ÄTUi<:ßCPãF DAd:(;DD?X{s=F=DDJ$;DDML@D;ź#RtTCW, |EXYEE$H\d]ŝ_sb<7$cDFB\BAg l G77EmFKzxBqD),GP3HpsG[Gv5/BxĂU蓾zE|\C}~GzȀE6,:ϓdd{H1Hgȫk俪Ʃ7DƐG,m ʊs,\ILɋII4II7II^ J,S3J*K=2\ƨDD8F44TBDD,ɾ|B;ldzGpK4dY,Z\K:_# *CcHA4BDLڳF3ܿ%,4˄B,ۼBLLlIL÷ ľ<،lڼC ݬA$L,M SNi,NtLEL&NN=ΗN\K4LTM`֔DA8cJkpCʤTu<\=?%@lJ|N脴>ьd 5x*u 0P-11IP$2q%c62yJ1\38㼳>S=7 U4!H4KQKS55Jǁ)]*+ -.0]1%S33ݱHU7uQ[M8+:;4AT,V=-TCE4DMG[TF4G}TPUPμTLlBN-OCPWQR5)@T]UVuWeXkC\C{e?]^B`=dcFF]eeVpgVi4jmW+,Vn W$W5W,EWS]W/m0}W3XYW9W_WEX3YSXfmD}Xj}YXLmX YY --=YM]Y2m]Z̛;ۣ:` Z֛[ۯZC-Z"=ZiMG-[{Z\ZV OUL<>TA ?A%MΣO@O9QҳѩQFQ#<]GQ!Rf=4ҵC\&]>'-E(0\xl\{\t\ƣ\\\]Mu2}}ѕŷ=hTF(D]k^NB P5CRu╹}?=E6%ϽO-f؉\]$L]H|l`Il]C}+M$lj%`CMB]Ɲ_}5U99͹<^L]MƄ2S`^ެ`m `;߷Je_ $aLE /b*:JZj zc..c/d0d1.d2c3@-j.rdӚdԊd׺ڂMLJf-O-Q-ۂj>PN.R-V-W.X.Y&.Z6NdLeM^e_e:]ish)"[^]de~d`nffei.ejnek~elemeneoea~T>b>fu`,gdudp^fhfxfyfzf{f|f}f~`Of\1g@fZew~_f耎熎f~g~hghghg^~NbS1Fi[d4~i5i6i7i8>d9i:i;ij?j@v/A>jB^jCNjDnjE.jFjVv N"k 6Fk s`v뷆ku뺶k pll 6Fl `vdžl&ʶl{m| 6Fm n`v׆mڶm bnd 6Fn c`vn_no C 6Foy`voeoapb0LnN΋ojp N O뵎NOŎNOՎ "N$O&(*N,O.03? Dp5 s7fFʀs p ssqt7tFqWtžwtdžqt;tqtվtr!uݾ#7uFr%Wu'wur)u+ur-u/us1vo4GvsVKEsshl?@t'C7D_tgGwHtKLtOPu!'S7T_u%gWwXu)[\u-_`v1's{{{g/|×O|X|ƿ|ɗʯ||̿'|ϗ}}ҿӇK_'{'NuXH „ ,8Ĉ'R7r⺐"G,"*Wlb2gҬ󢌜:wbB-⽤J2mbRR"Zr⋰bǒ-"jײmbrҭz.Ċ3nȒ'S̚7sТG.ԪWnزgӮܺw‡//2l"tΥnz:u;b/z,_&Ql6qF:UZWzY [ ]څ_ac:e!Zg%zi)k-m1چr5q9H1w It]t@xMJDyQjzU{Y|]}a~ei.m^吁qnu吃y}吅搇.^搉n搋P6#jo?*ܐBiuHr*9y+RFI걧e\z)}bIfl) rI 2g|)!Jrh:*"FJ*iz*㩨6jkZk kuwLdPV l{;Pf.l>; NPv^mn;!~PKn;"P o;#c&!P LRO װqISܒTqܱh#Sx/խ\;S'GӶ/6muQGpۍ>5x^PMHfCjqnwMCvC[rzw Cssx-θCsDy]C4:¥ |:Y AS4\/v!@A  и]{ G ?4^$Iy $AEHի! nC^$I|)Z$AHۍ##17BhJ A$(HЀM"AD/ؓ j(`S>ªp]) ˂e, _ؗʰ04acnpK fD D%'G|"X:*Iu"ʼntыcI2F2ČgIո6q(oR8ǩю[cDzG>ŏK Br0Db4ґd$G3IJƒ'۷IN'P%EY5RbNJD*WVR#HfIK2ɥ.s^L0b3+LfX̴8q4BjL6nz33 ghIԘq_< F=**< /ԧDOs@QPf ](CЈJ(F5юz!)IMzҔ-})Le:ӚڴNn-2䱙(@:l]mGƴm EC?кoFWp!Iov-r-eL6]R~N}#~Q2a0w1Bղ^5 ARгm/E L҂дDm2ULֲе҄m5eMжm8uKNQbNþVƅTr2XdFY;m/k<yT/+= /"=:/%>䱏_D ~bVRA AAۍ#4 QB /t a\C;;qDk1'!1!AІEhE'zюtHK/iKpӇ!PԤ6uQiUo՘vua-iY?֙4E\׺ޟ{l[/؜3mx0~6]hS񘶵llk;v h{.MtSvwmnywm}{{6p.=v#< 'w (t ?@.kw<%{<-q1 >Xw3\':čr{w\ g͕Nr(r07̩Ns^s~S'|_?ş+/?sla؟5oh~6ѿjv?kךv_luM\ eY!^"L!V^^l!v~^D!^D!0\1ġ!a^Ds^/!  ^""&".!^.<"$F$N#^\"&f&n%^0|"(('"*)^D1+",b+!!"!"#"#N/&`e- ^0Z #z .# ># N# ^# n#:!~c:8b9b:;!-ڢ?C@&#RAR%rBr'C)D"+ʢEb?-@ $/N/j#1$#2d:3d:#4d :5d Z#6d:7dz8>!P9e::.e;>e:nefFb@vG:Ae$&Be':Ce(FDƥ2TE,:W#G.~$0IJ"2dK¤LB4dMNb6dO%Q&!fff8R~f:2R:%TcrVze^^"Y%ZB6[%\ʥDҥ]^$l&@m_eܐ$aaf2b.C4L>&dNdNf6e^8rfQyjC|&Rh#i&2*:'^ *)mV](AdJC|(bZhAC(ehA(n&g^ahS:D&}iciWn)fX(A h:iA@iĔRYipbibNq&ڏtzdA22& wM֩gA6if"+QjVjgA(j iB*s!Wz)_2ir&"觾ejDZj$ejsx &j L)ΠÒz6*%N&2f1l+?kGVbk&k⺲땺"e*dkռ*kf l ,A+6 D,8R72+*³B+jv2*ΡBndή*ʦlnZzˊbp]R*rl,+fh *i6Ba f-n-v~m~lm-@ۺέ֭݊.X-m,mA-)Җ h`F!(R,*Z6*'viZf*견+Z "% kjg!t44tu/ uuf6Q"*5 3 ;5Bu"K5Ful5mfo%w&95(Cv^J6_Z7N .њ1 k' $ 'i'&g橢ew3.D1NqV\^qfr/G6[/)6uvcvwvN޶e涌6Swi7jw~jTwkrOjvjsw3tt&uǥu?(vw/"wv 7r50ubv+AOn'|p}f6~S%_qˮ~on&[.D6pϮui{lvx*$ǤzC&_{y[#~COe/J)I ҬJ90v+ywG z`)1z9AzIQzY_!9Pazyߦzzzz ZE4=:{ݱ^޲^SxtD#;+;?;m{%{瑻Օ_ ߺ_߻O׺Cw޹;{+߿3_;_|#<+/yU ɽ;3<;cks<<E'/>#EtGO>CEgo>c~>E闾>>EǾ>E|>E??El7??3EW_?SEw?sE?E??E?E@8`A$TȋaC!2TpWE1f81a.A#R'QTdI./aƔ9eI\7qԹfI?UhhQG-iSO2-ٍjUWR- kW_r:vlRfKQm[jӾwk'Ç'VlbNjKn,/?ڒKPL82Llб4TČ lDy۰=W0?qO MDP8bQQa|QFguqGܮ;",ZI؋)S@E/|V09V46ە'S AIKO>4cpCUQm9 QIR1͔;!9tU#[MJQ{S9Juj)/go~i1q͵@_E7b)6ZeYgE4Z Dk=([m!z[WJe\se4]OߣޅR}^{Uϓ`:0L TMda3.Ƹ6c@Iv1JYeXnYaIuz@@_JCZBfQL0A/:H.0iOHXM,la!3G:O35|\  MCDxDn0n$  ox3q̦%b dB)̔Yc>Xvn"-\afIˉز3,xÉ쐇5 'Hm"H1\LQ-sX$'UA) ^IgGC؇v睔晘>Fv 7 UCIГATeE3eQNARdPa=hLmV ^ FIRV,HjjܚҸЭ̋[Y0{jSɸ5qk.EրƭaVǭ$[2#n}fH*͔3q+wV(C7έ^e[j+n][U \+^׿̵g`K†TbUXΦd}SY ef9k~#IH[ژ9Qx2Q7nsK+pJ\u=]O8V!tm*vuŮvxk^weo.%M+eDrdl}2[ֶ l+! VGX朕|j8#ޘ z9Z%-̮8.foE;c9ko(Bj"J>AyR>.e^IMZ%Ifd9bvef٘jN&9Yr/kgdY 0Ή=;'Nzpsii^ f.L`7aGc O1F 4vF Rn1\NmT$U"!O¸5*Q^4WVX [iX ?|0ִm?`W =pl޾%nH{Rnu>m^ީMuJxJ|XGSaY@%DW ƽLzR nŕ8GrT-uR<{5?ϔzy>qk;=fEѼP?KurQ\w]1yo%?yЏ'M[^O}5zؗ}mO{>󲷽g| WO|+=]C}zQă7o__?o" OOo (20,կ=6A0GJ//aROks0wp{0peoPPP/\pEp p P Ԑ  P  p0Q Q    Q # ' / 3Q 7 k )  q +QI1 1OqPMPqQwu_c  /P!Q%)-159=Qgkos1?[ 87oo O !O!!"Q""" #R#2Q>$?R{o'' Tr%Y%]R%KB dr&i&mR&Ktr'y'}R'K"r((R(KBr))R)K"r**R*Kr++R+K r,ɲ,R,Kr-ٲ-R-KBr..R.Kbr//R/Ks0 0 S0KBs11S1K$s2)2-S2KB4s393=S3NbH4M4Q4KX5]5a5K h6m6q6KB x7}77K"58K"39s9999KB:::K;;;Kȳ<<ѓ<#]P!^=3&or>o2'>2(r?2)?2*r@2+@2,rA2-A2.rB2/B20sC31C32/sD/33?D?34#EMs5c3Fcs6sFss73Gs8]E3:99"Ht:Hs;sIsKq#3LyR?L#4MR@ M#4NRANђ# 4ORB)O#04PRC9P#@4QSDIQ1#P4R9SEaE{EaTF5U69F=6qTGEU8-RsHH4U#USItVœ#VSJ@ JK4KK>4LL?4MM @4NNA4OO)B5P P9C5QQID%5R)U_xTS3S7UFiS=5TGUG^OsUYu9_HaUeVIqVW"XtX>X#LYY@tZ#N5[t[B[#Pɵ\?\ѵD!u]ٵz:_#uS^k_uGKUhK3`6V` ``Imuao Bbb#.KUcc;vYdTdG*deSZe!e_.Uf3fkv\gATgw2gShE3!_hSFvis_+wjUtYj;6kSa6JDJkR'>-6mirmٶ'mc)nn+uore-7prp /p f1q'q!3۵]@is_h76;s{|tSU~UOj9Buvk[uv9Bvg |vmuc'www(wxx77yryw,y2zWzzw0w{{7|7s|[~|ѷ5w}k}W h^7HXU~Q7Wk'Sx"l#J€_2wX xm8xV#*d'v"6Aփ#Bf' w"NCW#Zg'#w"Ҏr+i/Wsu}9v" ِ'"jstX;8W8W_7va#%8#X)x/5x;؍AXzGMSXY{_eT~Tmsxy}R-:U'"x"8^Q_UUY^]^a#diݼo|>uV{צGV׹YVeֺkUջkXymܼG97Uw[H^!%/VٖUSTӵg]H?TLQ?UY_T]5e_aښm?kqku? mwZ_c <0a9|1D 1ƍ+b2ȑ$Azt2ʕ,Qz<3̙4azԇ3ΝIP>)MVd%Xfy%C\v9ЗHV)f[hBCfmqr9guZyyB^i柀$` h9[o8\qCi^ eili*j驨fꪗ)+*Z* kꬴbJɦj챚6, mӲZⶣ>B*иba{-n:ozoo*;0~Z0 [1kG0p^n /L/// L0㌰ ͰDSKc(JZQFtQuaa$, O8Bp+^p/np71~ q?H2$*qG!HDcT8E`\Ebd,8Fbll߸F bt8Gb|Gb,!9Hcl#Hg>/I>c>~)'A +W29KzQ! IB_.1ihC*N3X&JS|&lbQ`&ňpQp,'tQl' x"R'$%II쒗LdIש(RrH-WKY>0] -:[r$?{)a3"maE&s,aEL#NsH&LMm4ONq 51QۈNu*5qSOyJ5U|ǣ? WyL !hAд*(FHъ²rCZptjRR 3&,fJQҖ.Ӧ7 Li:S6 ٩eSu$QԥOujT*Oz^ժYNׯ|CnjPuke+*WƵwn]\` LB7 9lJXft8&d#]:")f3rvE,h+"ڥ<-jYղ"'Wnj [Vķ E.^+WWoUr7܏>wådc76fOM׌u96} Zޓ*CcM_Y L&x~ep(Q KT˲C-| f&la#Ρozb+0eqx^{Q3&cm؎}cBYȎlm1f^*7ƨt|Aց@92l2$+qʐS+˵s;zd$XEÙKf5Ðmv)C+8˹1|g*Y\s g@QЃc GD':f4#]Hc򫺩 L;Yӛn_=PPZU]{ުt [T̵^ٚv2S&f6hK[Ԯ Bh;=_P(2^r`|X@n[~U7mSs?ìrKiufzwfÇ]kJ|U81>cK9G{M:H bt?P`SB;DC] :q_jZErKk*\l`_]Y"'u=}b4mvCjg4۵vXлm[5q}a_cU֚Y>B3:|$Zz_lqVexǫGm|"?ɴ+'[&|wt6Jx&|gppm}}D'^lcYgc_G_7U_GI8kOw'o?@C7KeHj\*W|y6yчpG}}]xg^8T^ (Z"XZ$(U&Z(8I>,Opݳ=}?j 2?n8|䆄w@uhr8ƧAn(kIAnh/ICnhl@NDWEn~^wFnx~nwGnrۆHnhr䆏f-hh{nȆp?zxHxˆo8}$h׌ˇ(`v8E\ԉXFl4XGx}hH؊􊰨(kh9zX cGvV8 dXk9]hȈl()^ 08Fx8G؎{HH8T `B^%I^|%vx I\ \ :W ]TIX}]\9Y "%i(y+ɒ.1)@5y8)]œ=$?&A)xŔuro~Xe%87%Gh䈖Ȗ28tx9PzE7JiTy|x('Ԁj#@y(5S 1a4~&IT旒c,q;"WohU'Gd8 i[-.p9Q8Ht:\z吣@YXChfE}Ǚ]ylH*-FeB/酩E5)kȞi{iVi78xg h&G}7}ؠ?^)9JŅOuW#sH iiWvQM 7PW-&uأUG5:H)ܖF6XN#< >ӨS=򨾳=#>sȓʳө3;ZؓcC 9888:npvSx3s}NC783"C 99:::Z:z:6J9 *ʮ7ҊjZڮz̚ʺگ:z*8::Zʱð۫ [; ;[{۲Z:zzڴ E;>TVX˩Z\ ^+`KbkC dh˪F۶HJ+wy{{ Kk;˸븏Kk;1˹빟Kk;˺뺯QKk;A˻뻿1Kk;ˋ +an׋ً ۽ k狾[ ۾ k[a ܿq l \  ,L ! % )+-u|+2췀 9 ,=A$lEIĪ M ˼QU\‹YP, kK˽K˾ KK˿ \} ll<"LFl(‘0<3ly[6 ÝL# BLʔȎ|HīLLįRVl˼Z+˳c\\ig<|o<Q|w< |A<=|ʨ칐,”lϙ[Þɠ΍+\Μ+ʮ Nžl|˶˻ дleʜk slՌڜ /mLl?],ϒLlϖ:;-J Ľ|M-Aѻl[ f\ "=l\&-Ԝ*],1-ӗ2M5=7Ӊ;R]@ԓLEmKMO ՘LUWծ; ^ ;]f=hۻlmr (]v|xܼ/׀]=l٨؋C3|ԑ=ٔmʘٖ܎ٞmڬھ\ڦś޳ڮ==۴ƶ}n\}t۾ 10- ܁]˝Ӆm]> !Bͷ׍٭ݟLC|ΪLާk޸ Z -}jn> 1t T a,޹ѽL\!#ܽޝ♻b~ ]2 \7~9K@.=FHLRV X嘰\>FLeNh m>Σ<畛E.멻|.<~Įƾ>ўnQ..ansҽnNض~tMՂ޻5 o ~N*Q}$߷jZKm`-o.滞3<MNp_>O@BDFHJ/LQ/Z.eϸX-8voz|~Oۀւ/ׄ?oOܠ>T?؟! ^n[n~n놢?n^n^n놰_.nn8 а A .<( V%NX1ÁLmǍ ^"YI$EBKٲJL1eΤY3J9u3J8A%Z49I.e4J QNZ5HYn5+ aŎ%[6Jiծe6JGqΥ[7.Py_"uZ/f8J%O\9:5o9JrE&]:qUf:5fϱ=LQmܹk4o{UqɋsћdXJٳٽJM/M6qd^GUVz+X4 - t .K0#>sB lC`Ͼ2mQsD<Q6tsQ7ބQ8┳Q9Q:!R"3#s)I%S:/=(o=*wb棰¯r?4 Ts-t󮯰L- C>C@'SqD$PLDq׾"_tfotv1!,H#l$UW-([J*s l/ sL`*L \S6T[{NhsվV@@CQEEq[nC|hRtcL71O= U*uSQ+W_V5Yief.{5X"̭]s+eܪYέnj+k*@*׳Et+qUyeζBwҭֽt+w7*Oǭr+} fr+ܘcBy2b̊-6k<8BN1<egY]&Q{:lŜuo餻sK6:jѣjfkv},lN.vmRߚo߻oM̈́} Ui͏~S_ؠC QCxD"K,D%>QX ^MD/faCD-n1X\c(7>1P#;"1Sc>z_aqHD&RLdVHHÑ$"'YIJ^&IO*$AHQ2\e([Wn2e%kISr$/9K]6AZ40L JS?mBmPDJѣZ4]FѧzAUTJҫԪ[}iVcURեajMuT>ML˚ӶB+PZծ֕z5*_WuU31j\,1r,A 1b7ڱxKL WKH3b-gcڂ=lV[WVhq\&W=Vl\FW}Vjq]fW۽q]n%oy{neo{no}{n%one&p |o fpVpa gXVaX#I|bo +fq]o3qm|o;q}oEC&r|!o%Kfr%oSr|)K[ίV;4Bc&s,$@kfsݬCss,{޳wju{h/z^W2)_gFp`•taT(fujXƳq|kȻk$+Æ|l,㲕3G;i~s;gy- \E/:&tkhDZhxW+w{lbZV<ZV=a Z^5OpXִxkX׼xlY&ylWo-m֦9mәv:Fs:+fzM[4o\Q_vpG[9o#=B:nD;}7K::7c]+Z'eY?vj_^&{/˾=o{ ;C6C8/s8>33[>7k>3 37>>î\4 ?S?˺s4TA?s1??1@#;t2K@+k@|0 @> :rDAyˊԼt.ˊ̴Ad0*dSAXs3;Y+B#1$LBpXB&$2'|B&B)A|A+BBS./C ì CzCwKC5.6AXd4CH:;CDC?\@ D|+DC0Dlgd5!tDˊH5ˊK$bCN_t⻝Q$FSPmcEpYZ>{ER^T<$a/bc DDkFFȇ=j$BFFm @F+@pl2Ndž<ǴIGRdv@xyGz ~@@\KZ QMZ l0Z L[lѕOX0"-ҕ P[P[-&[ 5dq2[ lx:nTQ%}EbӸlQERQQ0S< <UTLR%&m{R(1)!R+]2,R*3TRgR0315+S33435eM:I7}83SS=U@TBՃCdETsT%TIJTLMTO=c7Q2R-F8UTMU]Uah !! ,.vxum [M30212121211212228NPwp~ሒ~WNGB8   }n5n*`K(QLGh& fY'T/P9?$0*1#Q ]*c(w!%/9:44;\n{~ڞӘԉqkh`ZܺUӸP)յ!++)(|,w5i;X>U*7#p lv%B.[:oD~ILJGvDoAiAaX\hZzbЋkՅj}intzg`do{՗͛ͧӱ۲ߴۋџЫŰijοvr·ͫ͘εʭxswqk}f_|TscjQJnUl`gkfyaRU{WK|N{EnD`C^=_9O4 =Q}789YkcYZpmpH(\Ç#6\Гŋ3jHQ! CcM(S\I]0cʜIg8s@ JWH*]XPJJ\Xjf`ÊKDhӪ]IHpʝKExB Lj+^#KLP3kIICMIDS^Iic˞MZsIZ N{DȜУKWؼzAg7{w$7ٲ|5׼ٳ}ϟE=ڴ~ӧUWڵׯeXYm[u%X]}5_EXaUceXeugXikXqɵ[G#.&uM7vwyx% y5zEiSGU|eiTGu~iUGiVG iWG֩iXGjYG"&jZG&6*Fj[G5Gc#B2AG.yєCdG.u0E'>n^Kg.];tlwwDFUZēLʎw)ei^=`Rճ7Zh^ iHηjkԨ?o~YCԵMeW6 Mi+\@(pqTNf/7iQl>XlмxQbE(ˆq!FJp$l%nȒDRB4qdyH őCd#HG&+d"YD8RtqdH,Ƒ[d#HG3$#iyF8Rqd s7Gì#:N+td!HAfđ#GBr&N*iI`2J$'Oj% )KSR.\^ZJ2%-%c[j& /{_S6f1)pt&=iN!մEMl)7cNqℜ9щu*t'VO̓h=O}⅟?25(fP,qCacMj0QGRz%EIQ T-u)Lc:S9)O{S uE5*RT:Q*UzUjubWYv5fZ֏Up-\QjוU{-g_u֝gay{&Vgc؁F֠Mhezهv\s9Y҆VGxGs7Qk'ı1l$ *XŷaQn -ƽo 0"76c䮋jw%wi^}yL׈{RWE}X׋/^ XFc(q %L"C6 d%3Dv2,)7#V2|=rUr,"gsf.9or5Rը~5WYǺֶurk^7:խ}jbءFifZֶv-Eט]in׼v}]ܓ6s;v=c;^vg;u=j;ﶵ;gNnn8 uo8E.oF9Uo8?.p9q:8'_w79t/3z͛>r'zʵr/{̋.=dO}~kW{~t'}rݙ~>u;@7|u=~,h=Oȗ7r\y4w^͟gs@B&a FxHJh&qNPR7A5vF& Z\؅^5b=8f8&A jl؆nGg|B^|xw}|x}}}w~x~~~wx Q؀X؁#8#X+x+؂33c<g8@XKxK؄SSXs_8_芰8eHo،oķVg?ɗָ|{؇ڈ}}X~~؈ hȉHHIȊIqhɄ (8@B9I FyLNRYYVXm閊qi`XdYiUh 3jsIϸ-Yv|3}YǓAَY)Yx!HYiqBcٚ2م閹镻ɛmhY?49WI}ș̹I9QyIiGɉ9YI虞I)bɚYϳUAXl%| Ǡ ʍ)jaJɡ" #%ډ+ʙᢧx1 JI=f9.(i 94ʞ qMڌO*QJSJWzݨɥ]ڜ cZejiHoڝq*u䉧'{*YOx4cFV}*JLZ]ʩ`WꜨ ת*讔'Zꫂ: Y˘ɪw1C*HzkZnz٭ *ZJ]j*ʮf H*z ;HXʊѳCJ ۰\x izMj} Q'Jj "*(9xZ1h<; aQ)&*#ٞJKl."ʱ ` c*I Jl:hjlnp+tv{>[|"jcj QK; zUkXY}˜k똜[ۦ Ѳ8YRy噺d7z:=:tk:غ_yK >%K[+; f[䋕˕KFk\[L+K90149Y:yj; .{z \,K;q=ˣz{9`%'ܰ)|-̛+G7[H4|H}ĵH~HT0EHH쀎H*)H*HkGH[LK[xɻɾHhjVlM@-B]DFMH}J OmQݲSUmW-Yik_}ac-8e7gm-]mo}] 6 X[:<<ܓ> @L=,˽܏M̢wz"c̻ !ܚ#A_̑a]e/l41l=8|-}͘ԹBPIͫ-Q]8zdݱγ ݈k{'G|ᢧ'G⮗{gᲇgg)7{Gn>|uEuGuIuKvM>vqx'zfghG偧t@ n'p7f^\~xd^wk~wh~[]GgFw|HJ.LNNnP.jWYuw.yw{~xsN.秾驾U~qcneꑮ.Nn쥎+.-.Nn!#%'.7/.1^,>^~>|?_o b3bpPoS oTP&(%oV.0-o5P685o>>@=o=PFHEo9NPMo4PVXUoP^`]oAPfheoNnpmoQPvxuo^~}otPozoyPOo`?_o%ov?_oa#dC_""O**22O:_:BBOJJRROZ_ZbbOjjrrOz_zG@ lPa >PB:-^ĘĄ`<~RG JDRʓ%S̗%mę3a+=}ʳ$,EEJd.M>ʴd3U^JU֭~VגS̞EVْTܾWےVśWݒ5Xߒ> FX=?Y9,_ƜY4<ZPLFZA\[NlƝ[Q|\^G\;/yP[o\Œ#{/Rx4^}P&tiTQfşUc/k-jk.k/k0+l1 kl2 'l3 7l4G+m5Wkm6gm7wm8+n9n;.ǁdžj:#Cc&,=)}z/>+>-/?/R+dׄ+䋣, d , 䌣-e-卣'./e oHGOyG 7Ũ"<2I$l0_m`JY2Բ/+25 dsM7\A: +sO?ݰCB5KdtQG!]EJ'G%N=P4݌L=TU%VJYV5Wv_~%3Xa TXc9BNeuYg)3Zi9Pk0[mIT[o9Rqu\siWދpd:f7^{9wU}uU2``FWobxLNXdA7N Z19j%CON[Qdp%EgN]yq wy~HtZ{VUez=i[ zꉪrok븎;lS{Ȧu;mnOؾ;oST 'pg7hY|rDr';jбt2)RW-[u}vjcpw<὆xŻ- 󠇐M" Gm/rGڗi'*+TAl"D /v&@M{l" D "M0y &򳛭kBp3a B⤅@yad8C]L8ԡXw:~Cԟ7;2qO4;b[+<6nG;ɩq%cKP&wI5Gя dXɵBKF'IJ67 Q> )R2{IeJ=W=h9[.Ku07VL3w2OL=xD4gM\pDC4oTDXrN ƹ6{'˦Ogsmt@&PmnBPsITf<#'UfnM8u#JHEZuJK)#mw{eϽjG;ˮw~:^w ;x+{I1yWD0yΓB=?zЏ71z[B`Ͼ}sݟ}_zlBA|BBBCBDBE/(;k;ȋ:J;ȂDK:I\;M;+N@AB5TD O eTtG-RƤJG&TԒTO=+%RSEUUuVuU2PڤP:-lS\J]եUU`Ja֯,Vc5?M\Vf%T}VhiEVkl։Vno]K WqԱtRuewRUyzWЉ}~[X؁|ZN_ZmXK}__׽߳_]_ `[(W@`QU`Dى`ތN\ `Vamf&n6~f FWZ[\]d)6FG^-x`aufc歕fgD flfIf%p疽[͌ePT̉#V@d`ozgg}~g\:U5_=˂؃؄6ԅц6χ~Ԉ>҉ϊԋ;Ut.^u6bv~WwהvՕn_zi7i9%k_g.h=>djf]:J_d4FӒl4-G_t4ݍG`|͚52-ɦl i4-H:4- FIӒ,\4If4-c^J>m0-Ji4-6KRa4pkckvFklF>lsLl~Gnl{|쒊l?ln̶dm$m٦Rd׆Ӯmmfn$n1Vn `1v΄힡[lVono2xoNooop/w8pg_vhypp p&q1QO-+evqϖqZ?b@mAmBmCnDߌp @F vOOnR UʞevjTU15k`N\-pWfkkk@A%j_.Tj"Uv$wvvrFi_`'b&lmn{5Ӷ6q_rеNun=EwfLMQ\RlS|TUVaWXYZ[\ ]^,_L`-_z?zzzzz*FB@601 {9C6DGóCACCGt%CCDAB CD,E3Н)k.bԪWnbزgӮbܺw‡/"ʗ3o-jn:-;-*o<-j=gү'~jQH95SPYuUXyW`Yh5[pu] _q!ac(iYDb+k5m9t=qAsE:ǣQq'⑧'ٷe}巟: GED K WE [9!gED!kY!wy:XD#zX'*:YD2ًzh#E#!t@ 9pDysM]DQݔUں^DYO`{Әe(`h& uB(ax'ʗ⡆&艔VzFj,2)8v駫#C zkW G4CSxfFl>`FxgFmz;ނ㒋bZڢl3+꿽*0 [ ;KNYL&1;1!L%Wx2^-o2̉<3d춛n΢ ~?߸:mG=Pg'Um5z g`Wio{4BVEd|Q]!Ò6?aM~s]6nm]D82pn A`@rx&9pyA! $*r)lN#>j|1|h( =9|x1AwM< ()͊(#/~|H=ƝSLkڽ2p<%*:nw<C>'>!as/aFȱ2"ȷ9D$XxD'U/sFIY2%dcRP-3C]}e0)O3Wff)j&ꊈ&YqfP9':˨ui\0齖f.c HChAO'a-b 5CQITZEѾL[a@:3 W13F14M%C`:Vpj>OTt Uh0D5 3D%dMݠ8rTuBjͳk CBЈvFsBXҙ48|LQjSB t7XaW˛3\Vv,}[`,e3ϾE3FB)m$[wAQ^ɽ%oқEv;^&p|9pA3v3q[tضwtȧ Fa!N!Va"^"ra$za##a!V"Nr"z"%a&)B"),b- -b.."b/*/2+:b,b&"+2&c0J3R0Zb3n4vb4~5"*!!52c668b9b::b;;b<<c= 8#44?9"?j?c@#@$9.78>d5BA.cB$5N3*$:Z$6j@r$7z$BHR$I9dF:$;2$U Lv`M"`N*N2`O:OB`PJPR`QZa`)R*%Q~`RnMBT`TUdVVWdXXe7K Z%[[Ex\%]֥]E^%__E`&aa f`bEc>&dFd:Ee^&fffZEpg~&hhzE i&jjEk&lƦlEm&nnڦE$o&ppE@q'r&rE,s>'tFt:E`u^'vfvZEdw~'xxzEhy'zzEp{'|Ƨ|E}'~~ڧE'ghhD,>(F:E^(fZhcNNfenn푠E%h\%e^%eb.&"fD(v(eFĈ(fvhhjjl.ln>npNpr^r6tntVv~vvxxzz||~~&)F*EL(in(n臆(hbD(劶(eD(b^**"jD)")fD0)¦B)fDP)b)2gDp)B)rgD))gD)§)'橁)^:ivi+F*!Zh6FjhRn*a֫(Ck*+Cj"*jB*jb*j+k6+>ki^kR)zkjcR[Z+++hrJ&,g*l*&lD,l6N)Fl*VlD\lfƎ)vl.+ȆlDl킮,iDl.-&j1ΪhD,+h.&mdn iJmjl6b-RizmrNlvؒ-ْiڪmz~l۶-N).2D޶-"-ά2e ^k%".]*%ګʬ+fhn.瞦~nl*֖np.ntZfnx.힧n|i Wk2&.o2f&:ڢN/,Cd/v漣0~///jD&m//4ԯ>'u/~'}.2n.:0lc( j rz%0`6p*/p ðj B ۰p'ϯ"cq*sA;q@Zrb2/KoNp7L2eq+h{)ױ°p0 n!0" "#.$/$;&ckk3Bt'/(s1/o-j5mp**p+p,/f:g6Sn7-p..o//o0{0o11o22 p34ok4Bl[bs6BP0Z?;832s3c233޳sstt&4Q7>4D/'2JJY3H#H/.I-CD`6t溴t4tt4tu 5O15 _u$uDCD_W+Fg12ztUUmVdKnE[t0jy+ˮ>l7k|C}/' -WO9c?%BJTewUJS?@PHAA&T6,"B *fF=~(QÐ%-DPʁ']\)%͒6E#O^SQG^$iSO6:*)U2VT~VSeD;ڶhߖ+v׺\fUڧ{oT… f{ⱌ \p(RE"N[PChᢖ.k+/gФ{θ 3h oȓV4o楝;zN_[_{~w_?9P;"jÏ@ .B&B.4/C6TC#. 1?/EL$Q?VlH1FtoHqL%_I J 0K s,4S1H\J4_j)M:r3&9g&;o3'=w'?ZMSP6(Q UQF}Q&)9/3;7ͳˆА$QGTI a4WaUVW/z[qUW[/j_ VX_/rcMVYc/gVZg/2kV[k/o W\o/sMW]sq/ Gy^y/zA}_}/G .`/BAna/@)b/@9c/z@I.d/bEYne/Dif/Eyg/rF衉.h/rA饙ni/"GꩩjZ/B[l/N[m/[n?(P ;UFDUpk]{Va]eVim}Wsr%Zs3x-|M߀n/?O_o.N砏n褟鬷kϾ뱹_ɟnB$i??@$U,LЪ-ns:t $: u $";2v3!$;rws!$"<xƳ!$<y!$"=!2zZhudH񕏊t;Dmq2w "W@0@>p\C.GmP`7B Ux3a oh/$@DxӓeKiJ2[AJXJFH-7F\2ND}99`3[u.±<]:iN`찙MC7KHqdѩi> vrHR*E8UPm@@_IժX_CzX` JV3UthMk;ĭk\5Wîw]X^:1uc;ְؕ3ClbwX:ñ]d^#Vֲ`lfٶY"AG+ҚV%VCYUV0e6ͭn[ 6p㢴!ɽKW< .MRv!Exg^ezTϺ~/jZ]׾ͯk[Ҷ,0+ .];aZxv.`a%.cb[o#q^65ǞTC /B-?淵/lߊX-pGL !\jN)0ź/4suˌ34m^}Dkr,kgt~{rC+"ȬEkLQHѷ]6$=yUW&i䆺f{jæ:^gkUoky3}ao^=vXgO29R;֞&mr^$g*n;$nypwyOy;W o}:mC!^tۂ@:?UJqnZqtz wȫv歱5ې˭{y7}/wDƁiy+iWtiNCӟFaC21z$NIMϓ[6\y?^sewyw_=V3j{7@gp{xWz632aMELpl犉x~~){ώ}pK}(vBMDZ?FjSȚΡ5ckA\eo_ofa(f"cLfe/jfJgŌfi!KnkOfn"^n /~eXEZ00a  Pa"P%+pc.IF7pe:gCgFOpiX갨\cP͆kmn7B֤@ 0 P0#Q0p 0 -` Pd Y! Pذ u Php])o0qM qM1dqM$ pM&*.Q26q:?QC1 IO UQ [a1gqq1txQ}1'bٯqqюQڶqƱˑ qױ 籓N2Q`,\`dOhtp~ )Vhzf̉\LN$kʮRI&Xnr mzҍ2()=H)) *; PfO N,Hhr2p2eQ(S4D44!R3-5%4 51E65696=7CS7G7K7Os":S5Y68!8cS8S9?zL2CCD$;D;;:U>>?5>D??@s; ; ;ζ?@S@SBBӓBBSCCCDCSD9==I4>M4@_t@ tF4F'F+F#G3TG/GKG7TH;THPT FC4DtDE??AFTFKwKoTLHXs5SM84959t66647t777581b85u9 9QUNM#NN+O/UO3O͔tA"aTITMTG"aUYU]UW"`ViVmVg"aWyW}Ww"`XXX"`YYY"`ZZZUXu["[5\u\"\5]u]""]5^u^"^5_u_" _6`v`"`6ava"Na!6b%vb">^TGWw_Em:z}#8yG8yh#ߑ'iz8YuRV}u|XuvZ`l[/ux^u`v>bo5v>dR (=;0…$"ĉ+Ft8҈;zcA$Klۺ} ktڽJ9| ; >J;;~ 9͜1:ѤA:լQT;ٴa4;ݼq<ā<<̑=ԡ܅=ܱdJɯʔٯ >Mu_(Q2 TTiE`VQV ViWq͕WyMVYUEIbzXd"F]Y}VZZV[[V\\=W]]]}^W^^^%_.W_;q_?_Kq`O h`Z!`]1`jq(anQhazqh}ha!Ȩdz"*N.^j2n6~j:>jBFjJΪN6 QRieXj%^v gfhn hGVtY'z:}*%Bס"h#Kn_(R:#z 8:$ H:ǡRګzǡb",~2B+'VHʌ RmVyնz^孟W+Uvչ^n:URzռ^e/W Uzտ^%0W UzM^pWE\Ugy]^qWu\U ymlr$e8h02V/\7lDճO.G.2ݴOCmSX>b[sm_+]6ygk׶7}sӍw}f>'%~8~_e~࣯o/oO>0_ h?Oc``$@  8?YdaYVHp,TaUZ2a ih01![0B!AC""QEdC(P9 #"Xa{-0bDH2i rzJ8;1zaF.qlb!x(&rb#,Qb$xI0NcM1hIFS|*?G[T%!}iH`"R$&#HdBR%%yZBd&&Igrrf)9JoteLh\r3\8[_3f=yc3\f?Y^S A^}fBЅ3ԋX84tfD7NBINBԡ*(KQ*OS)>mO^FAx@&P $j@FC,R+ 2_U7 FuYV?~ժcC?Ua ZV5o)TNa|_׫$c-a;ثcmcثce/;٫`g?٫b-iO;ګbmk_ګpbmo;[ݮ;Wo ׷W1q*׸]s{tHwԭu{hww{ w-y{ wm{՛W}׾W ؿW+WɁ KW၅/ kWف? WOW_ Woolv aC!ΠW*EXJŬ1YjEQZ؊ŭqnmp83*rstf|nx wU w=/x n/= ox?=x+nO=x;!GNoX*~Җ ~pN{z oImKg,Y"W2K䓣^9˭rd<^9,*:_Uzmzэg'fz-uz>PJ}u?Z[tuc'~RG\kJ/vXǝsyݗ|wV{we& x\hf|xۓGn~y[W=/ѓ~~zF^f}ui7{bpj{)vj{nqp'krWkw|LkʗwV|)w}U1}Ww}V}5x}U}W7~UQ~AG~7Hy~gtW^Q'uoV\z8UQXVh{U(B7|rVv||W"he-W5x(l*W.hf9wmx@ 6'hGD b9ŤL7kyToVuX {Z:{\p^p`{b{d*0J /z+!X+Y+qZ+au0߷y\+Q嫿:]+1ݵ%Y^+ڝ+q`+ѡ 3a+a(b+*=c+9-b0k "ZuXժY5Zz[ZJ`Ǻ]ɪFJez`٪ƭza &bj/zcJ :fe*/JzXЯ5Z{: {\[~Kk0;hKz"; P&+(9,.2kb4[3p8+ :< > 2R!FXHKNQ+T{W{mY˰^;y;t` bkejz+ul{n;qktw˲z}뷀[!k sW}O rlLm;xʰ}j;AfkPz#|´w{p5cї@eٙٛ٘}ڡ-ڣMڠ &gޠګڭڪ} ۳M۵m۲۷۷}ۿ -ܾ}+`Ǎɭƽ^m.5=7Q]<}UWRbkc e@dpٝޝ٥ޥ}OvMۻ߸m߽==Ž͝OY[]}S+_])3f mW#'nڽ)]-ߺ 1n 7NVA;~ =GIFጀ?[ޗ b $N&X..3NMeUk.<> > ^~ش8kf !Z\b^g^6n>p݁..Nn窎礎)I|e͉m~_e-链h^.fn~|K>z^NO}|닞޼aMŞƮȮ:.؅-}^ޞ/P>I1>m41~n^֎~ھN/02S ?[U!^9^!_~~RO_ &(qҮ=OfBF_DH #w?x?Y]~zojeg/ik]-O!oy{OZo^}?OϢ]=/ڐϋ>~2~Iܛ/OȍЯ/O5(*Ŀ՟? $XL(H-Ӱ!Bg UE+NG!;NLVI)KNK1[NWM9kSDyA%Z4I.e4iARQNZu*AYºիԮ_lYgRU@YƝڻh+׿cƭ:ă 2r0a#sYY$IUY&Ow]QF:e*aa8lہ6{6oaO+0*sJ{z 6(qd)[&?f'9{f?tР,խ?E?#0w0 0ΰk&$<)!btq JҳqF(ioGd>zHH!StI(rJ*J,rK.K0s(łVdDO@YQXcuVZkV\Ez]`},ML%ks:T%PCS%5UUbզ^u[n[pÕE$1\BUKi,6c IeQjYS;vk]J[q 6`V8WC8a#~xhvl喙moYp PJW|qO\E#wr+~^ߟ;ۖu[wB\?|gzoxu1` /[}_Aa~Ay HBЀ*D ]!k( 0:`}A~! X"}WBRd`ga{T!mE;cD1eF#1pTh(qz",kc C|c"H32rl$h>@u@CiCEbEGYHIQKKKMLLNMMOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqpsuouynx}mzl|k}jiea^XSOLG}D{Ay>w}>~ADJR\hv~ùĸŸƷǶȵɴ˲ίЬӪէإۣݡߠcUzDGfXX #FiGDZvܔ3dc{Rr[-ڮs$bGOk8 E.E4m˩ϙ5oٳ$ФCuT)NG %*TSejZتQY_EUnֶvU;wlڲw ^] 6pbE,ٯ[”|ɞ+of 93КΗa.tl׵es}voпY=xqᤍWvʢ+%ݜ? ATWu?.UdwϥO~=Ï/nzѷν>vX"%bg]~7jVa!ƛb\a$ᅺb+zH!s"`2#V9QAH<`M4$]Pv?SbdeI$]6qIWB`V&D4D(`>>D&VBt'A*>s+Mϝ MlX@&S>q&,z*ل'dkAM&bG:L/M"Xﬣα$-j` C)-9V+K B!v!XbQ@!!2,M^.222211111122111111111111111122111111111111112211111111111111112211111111111111111122111111111111221122222222222222222222222222222222222222211000000r10b21T52J73C94>;15956=65>75?96@:8A=:B@=DEAGKGKSOQZWX^]]cbbdccdccdccdddeddeddeddeddeeefeefeefeefeefeefffgffgffggghgghhhihhjiijjjkkklllmmmnnnpoorrruuuzzy~~~¿eH*\Ȱa#J86q2kw(IRE9z˗ Ojؑ%̛8M^r%Ȝ@KLYϠH'8/<-Je4^'NmNs:OlzY2e\ŲeϞOLbՂ/\i  7_^3z1JE6NJ'SNl歕cLӨS^ͺװc˞M۸sͻ Nȓ+_μУKNسkνOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($ʉ(,X[0Ƙ⋩c8樣'~ +)䐘R@'?=jJ6D)8tÍ6 5.dH);dcM5,K3pKL%=uN8hFL/ Ӧ@Iz)ftϝL2b1(_6V$hF:KqΙ*ʨ)fj*%9*ک뫨z:+vi+Zz+*%J賮&o2+ -BUUBj.ulъ۬ز,;oB:.N;AP/kQlo cL-KXO;r+p,o'?q@,r*qb 9=r@GO-;hV\u-] ]ӗ9݌W펺`]vhm#:m0m86Oxm46ؼz6Ddps^{Fu D/~;4OiC?f+{ y-c4K,BD;?4<oL3~>ʩQpW?q?#_H9Pt_6P;  6 k4)>A }B4l8/dx!a OCj-d y Æ8thP$4 {Bp[ Zʠ",> (*qwA Ʊa܍8@ftdG<*ṛB.Rԣ$7K 2$$1I c"OHVjL!sH ,=yHPrg(?YJBr,*\2Sf7dq]J4Ef8ƧJz2/rA H5~hGfE;"S1ADqx G8u')D&3 Ǣo@ԣ9hLN" ]W5/iK벅=p)PR,96̱"++6wX=y X:yxդ kWjֶ m>??A}ACwCEqEGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~e!!2,]: *5I!Z!#j#&x&((**++,,--..//00001111111111111111111111111111112222222222222222222222222222333344494=4B4F5J5~R5uY6n^6gc7de8ai9_k:\l:Zmǜ&;wNk 2G(nS ~xy6΅F3ㄑ8'Ghh%Ό4h81sF8)DiH9UH6IF)BfH2 6P`3V 1i&amW^iF|矀gvqIgz MD*餔Vif)gV$tr]aꩨ0xuvP5s뮼Uj6YaCDz6"V2!!),0gJ11111111111111111111111111111111111111111111111111111111111111111111111111111111112211111171=0B/G/T-^,iy*ql)ya(~Z'T'P&M&K&J&H&G&D'B'=+8.|41z03v,5u(8t%1@3B5F!8I$;P,?U2DZ9I_@MbHReOWjU[jY]i^_i`ajcdqagy]jZmWlTlRlPnPnQoRpVqYr]sct{kuwqxuszru~oxi~e`ZURPOOOOOONNNNNNNNOOOOOOPQSUWXYZZZ[[[[[\\\]^ckuׁы¸ƺ˽ƺSH))\ȰÇ JHE3jdxǏ7ɎOL˄ _|I̓7k꬘dϝ@ 84Ѣ(c]*TiKLkB85˪ZT֭>rWg&%{UZn #dܷmJ[]^ kW/`H 5|8/Eh7&*/݃i'cl2LƚM&lY`G&|鸫cvtثgֽ]#_УK~ͩkHOyν__`ON7'e"}$ 6w<`B8衇fTP-WQ,*"IRh _|!E&*ؑHR=" 9EN$:ؤ ^'@TcE9f\6F_h6R$Z"h^NxЛ7DKj(w*cA((BI)YLh}zPR-jcSS(ZЊκS΢E6kKC$[n8;кCBAd1E>K:x4G NyKJcE$l(rx.f|@{, wӌ@ 1#'e* r3laLPGr.~:6Abȟ:<@pz!F 7Vp)~泞t@JЂbӌJ%";.">8#AA!AJ ASA\AbBfCiDnErFwH{J~K M!N!O!O!P!P!P"Q"Q"Q"R"R"S#S#U$W%Z&](b+h-l/p0q1s;qBpFoKpLqMtRtVtXtZu\u^uaudvhw|nyxqzvu|vx~vyu{t|o{j{e{`}ZVTTQQQRTUVXYZ[[[\\\]^__aabbccddfhls|⇲֑ʙýò̲Ҳײڳܳݳݲݲݲ޳ߴe H`ǰÇ#SHŋ3jܨǏJI!Ǔ(S^x˗0cYC8sfd==/6 JT%Ϣ .DJs"ӧ+e)E)ҡPvSZ bR tlQfѪ5[p-Mrm]w歸wտ2Lp_O}[V޳F'c/gԼ٨bKv\tiu~:Eׯ9Ιېsq!2aOo啙7oT=5m?C`idh|f=C|ͣF*)Mj饔馒ÒL-xO=(6,0;j+Cʒ7VHFkSJ\*{ꮽJ{tCKn"m)2+ 6~Zs+[SJpyT366ǥrjqqD60-@@,ȅ(̅Ǵ02~*1/WM$ *̲DLJa8:k0M8D5{duBW/&6NcjTݶo]R5C)1C=P3ԎCzc.:蠊B1 ꭃ-B.5:.{$q\9D4߼08O< JKu!3KM}c΋k9|ʣ<O5oj&ܠ (<o 3v>*!v?*ZDiS0X¥2 kJ+]jeSOů*B:(AexͥHlSӞ8#!ͦ.'P|,/=C?}d Ce/~Xȣ/TqL+!D6_ e:&Qde NHqlS`JxRKf:Ќ4)Mdv+F5nR)Xx0 nL:vSCyͬ;~(<9S&KBІ,eh=2ޱ̨F7юz ݢ8R](MJWҖ#\*ڻ8ͩNwӞޔwEHԢHMU9PTM!!2,1($+*../111112121212121212121212121212121212121212121212121212121212121212121212121212121212121212112222222222222222222222222266::>>BBFFIINNVV[[bagekho|krxotvqrsqqpqqnqrksumpynnymmzll{kk~ijegbex[_\aZbVfRcMeGiAm=p9r7t5u4v3w2w2w2w2x2y3z3|4~56889999::::;;<<===>>?ADIOU]gt~ǿo He(\ȰÇ#J1ŋ3j8ǏIɓ7\y˗ I͛7鑥ύ<)ԜNHr 4Ә=ThӝW:%-V+*W^[B٪yvgڹ/>| ס^(¼ ߆|-SKŒ?f/3@1OrCҢ!j^?Z߷J/Ubױ[ZoC/MqjOo.y)C6x?t7_D[{ɇvZ~BMngsE˂24܃J8aDՃlMaǍ8771k)DdvUTәkPl66%\)A%UCL蚔T͕Me5~igae2gI68b) wFzfZf&Z \}=ZgvNJ)ŭ0f5 FE]ꥪɥ2?lZ̧p$MD+Vkf[$|k9ʩ/"J1@i1x#Y*'ZȊ(]w14fF#| ^$C\$6j @E6>'1*WɈ]D 1WBd)kc}0tYI_*U9J攮4IjZ,Fnzlf)#h:eՐ:vS ;Iz`");R=İ@)ЂЧ3=E^@A'JQ"S8гiYҖHGJlq(V*m#HLgJӚ8)MaϕăPJԢHMQQ.%TJժZXU !.u` XJֲh]]Wp\Jĭ%!!2,o8111111111111111111111111111111111111111111111111111111111111111111111111111111111122111111111111221122222222222222222222222@2M2Z2e2p2y2223334455679;=?{AxDtGoImLjNhQeyTbpX_f\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxx~szn|i~b\VQIC>:641./1123469:;<>?ACFIKLMOPRTWY\`cgkpuzʀȋĘ}vp[F8'e8*\ȰÇ#JXń3j1ŏ;IE'K\ѢI,cd8eޜ3ϑ5%I4cO!*ziҥPi>mD`UUo^uiӁW~%+α615Bk}8kܙC u[u \ $,al& 9KVfp}AvV4eI/Zqְ3M6j۸'޶Z ȓ+7ks∢KNzuY}ŗ_ݹ.ї'νE?uĕ 9|% 6 VhwvT XR"hb$)-(#1h5ިs9xc>d/IFyJhV.> RNibVe!!,gIL222211111122111111111111111122111111111111112211111111111111112211111111111111111122111111111111221122222222222222222222222222222222222222223344556677593;3z>2l@4\C5NF6HH8DI9EJ;FK=HM9OT(]bkq x} "=aH(\ȰÇ#JHŋ3jȱǏiɓ(S\ɲˉ$c|I͛8sڔɳΟ@ QD*]ʔQMJJӞUjU]ÊLhӪjڷpJlVݻk:& ,޿ԍ;YYgK 'LJ)kRnBɹi$c:2۸[w0۹7pM5|i++lhcw7; $q y_(|O .k+.Kw/8c#2on5JnU.?6~\pC㩗ޛ+NM79~HŢ=&_nJ(UE6DQB%P7dE#ZXUhءfsMxZ$XcRU:VHDC6IMxD#QDh4Gj blp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*ꨤjꩨꪬꪜ*무jު뮳믶L:ZK2H*,H"G Klbr!rΒ@V4ϢkѺf[oCk;D*>\B6԰BlCKqsLv{#{l(/ā.r 3c\8L a#D?4NW+uk5҉^J!!, 2222111122111111111111112211111111111111112211111111111111112211111111111111385>7C8I:N;S\?`@cAgAiBlCoDqDrDtEuEvEvEvEvEvEuDtDrDqCoBlBjAg@c?`>\=X;S:O9J8D7A7>8;:>D?tGAjJCaLEWOIORLMSOLTPMUPOVPQXSTYUUZVW[XY][[^]^```bdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~{upkg^VƜP̝JНFԞBמ<ܟ9ޟ40.048<ߡBܡEڡJآPգWҤ_Φnɧxũª @*\ȰÇ#JH,+jȱǏ =\!1ɓ(S4xɌ+cʜI`K%kSMWfJ(H 5ʴ̟H tJ*HuiW?;g׳hm"{\gfʵڒ[ra˗Xln/bܷp+aZ#3+yH's6Tw.'{&ԧ~(~T}N~'Z_6z$,ʨr9fib邐Zz:(}Y*|Hvjk?:&ث,Gv#R,Vf+jmR>mV~X҂ú춻+bJ!!,}11111111111111111111111111112211111111111111221111111111111111221111111111111111112211111111111122112222222222221202/3.3.3-4,4,4+|4*v5*o5)i5)c5)]6(X6(S6(N7(I7(E7(B8*=9+9:)28).8+-:00=1/>20>30?51@62A83B:4B=6DE:GL>JSBMZEP_HSeKUlOXrR[wU]{W^Y`[b\c]c^d_e_e_e_e_e`eagchekgmiokrnu~pw~rx}sz|u||v}|w~|y|z|{|||}}}}~~ H ZXȰÇ#JHň 3jxǏ C Gɓ(S'0˗0?Y08sҜ͞@V)tϢH-z4ӞK6}J5fԠSjyh֭`-v5Y9-{-ñ:ٺm 7ܹf⼋^|j3`a>4Ō]22I![إP1# :g琤Kʹ~8vHj^P9vc ,0o?>YxEOClܡq?&Rb{䎛)orjO{ߴ-xw>OL&SxOC=D3,:X`Έ%ҍ$H~0!C5QFydanYjGfNI8H9\%}s@נ)X/>7|" ੍|釖nM6pn.MufJ^v駠*ꨤjꩨꪬ꫚*무j뭸뮼+k&6F+Vkfvk?PKnҞ.l2ͼv滆o7"/l,,≯㏋~L埓&̹i=}xohҨSװfOظsmvMq6M<2 u4g^dv}ӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*ꨤjꩨꪬ*무j뭸뮼+k&6F+Vkfv+k覫+k,l' 7G,Wlgw ,$l(,0,4l8<@-DmH'L7PG-TWmXg\w׿v#mhKFk-ipk,ܑ֝)x?7|.[l&^#긿wW.`A@!!0,{)111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111221122222222222222222222222222222222222222334444557768697}:8m<9^>;S@E>?FABGCDIFFKIIMLMPPQSUUW[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyy{{{~~~? H XȰÇ#:Gŋ3jGCIGrK'cͅ5oQqˊ9}$TgϢ0iE:ˣN!]5bЪbe8u+ī^j5lCfyRLVʌ6њD.冥Ù*]֯؋\\`K*[BHV9_[p۟2ítlۯ19vN^9h 4Ļ om̱>}uoOq_>H]yM{$)s7_}BO` |Mha;snn7`k%f&`MȝzᵒrXX3K8XFVy`JzdO^ɔF}7J#1i&p!!2, *5@J U "^"$h$&p&'y'((**++,,--....////000011111111111111111111222222222222222222223333334444556666778899;;<<>>??A}ACwCEqEGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~e!!0,~,111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111221122222222222222222222222222222222222222334444553514/4.p4.`5/Q6/F72984:@67C89E:G?@IACLDENGIPKLSOPVTUZVV[WX\YY][[^]]_``acccdddeeefffggghhhiiijjjgkpdmuaoz_p]q[rYsWtVuUuTvTvTwTxUxVyWyYz\z^{a|e}i~nsy¼Ⱦο Ha(\ȰÇ#JHB3ȱǏ5ɓG܈˒+c |I&E1mܹJ@kThKӼ42Nѧ05FgԪj(r ӁIJ6k,"KRaLcۻ Ɲ.BEH.ໂkujῇ&^ܘ㵑NfLq_Ùn2[Gw _QkUĖU(]Tp-ĦrpQQ0OG7OawkE K^!ڈb߿?a|g}ܱO`1 7C2w^>`aMGE1A2O@QO;P|Q~!>0TLp"ϋ(#G4n7j"S;2@*#hI$e;(̔T>d%CX HP>CBf &Hl×t&C!xBϡ& ?)f2@1Li馜v&[e2y%̨E"3(Q} ! 2XJjRZLZ(eŴNE>;"Pi-Fy V*!!2,  "% ' ( ) *),N1 n4%7)7+7-6.50311111111111111111111111111111111111111111111112222222222222222222222222222222222333344557799;;>>A}ACwCEqEGkGOdHV^H]XIbSJfTJiTIkUIlVImWJmWKmXLmYMkYOjZRh[Te]Xc^[```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~e<*\(p¿JT!171afqǐ2Fr,)$*YO,y0Rɰ' :t@'/%EPv4mR4)":s6"تڝVm%+iurC}: ѩ ;Y. 3fs8*0`VfLƤZYe$o;מY'ۣÄL1Vn }{a% )Cq!!2,(!  $+ 2!:#B $K"%U#&d%(v'*),,--..//0011111111111111111111111111111122222222222222222222222222426394<4>5@5Bv6Dm6Ff7H`7I[8JV8LR9MN9NJ9OG:PD;QB;R>>Q;BP;CQ;CT=BT>BU?BUAAVCCVDDWEEXGGXIIYKKZNN\PP]SS^VV`ZZb]]daafffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~}{yxwwtsuy{~ھظֱԪҡҔԈwhVH<1!e(֭3ȰÇ TH!ċ%VhGxqBIf ɓ*#D(0f˜[|y筙<$)T܉]N)) "uQ$+CC^bŠa[DBD[ڶEI.Ļn;]",]wߕMޒUQu"^&.(fV5XAta+5obZZ;%MlH9*"1#*GWܖ;B]lӰ%#˷G~_d=ַ6yǟ|t|Q`сC!!),#111111111111111111111111111111111111111111111111111111111111111111111111111111111122111111111111221122222222222222:.B+J(Q&]#g px{wtqnljhgedcaa```___^^] \$['[+Z.Z1\9mgWIsw4{"  wgZyOrGl@g;d2Z.W .Z(1c0/f<)eM(ta$}!0=LZk~ՙѯĵȻSH*\ȰÇ#JH1Ή3jȑl CIȊ(Zɲ˗0]"C͛8sDرύT(ԠɣHI]0ӧ/gJugПX{e࿤`r+٧R3[] ,:kػJ2=7q}K8\*woǦ<[dfLXq㥐Kej(3CCM>Ss ckaa͗vqw͔7HyAD] +?kxʁ{8]o`)R={)n7ݻ2_I)#Zo5U"BȈz h&Zլ,/rNGrڕ< [p 't$f8Sř"Z쫿"wH@+ڲd&}4Ĥf[r]W-P.mY4TdVuZDi]iW.J}vN>gJw AI˂DxQnS-R&ۣBSve] r^R ^(ꩫ.SrS${I;״ ]o}G,+;o>??A}ACwCEqEGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~e!!2,(!  $+ 2!:#B $K"%U#&d%(v'*),,--..//0011111111111111111111111111111122222222222222222222222222426394<4>5@5Bv6Dm6Ff7H`7I[8JV8LR9MN9NJ9OG:PD;QB;R>>Q;BP;CQ;CT=BT>BU?BUAAVCCVDDWEEXGGXIIYKKZNN\PP]SS^VV`ZZb]]daafffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~}{yxwwtsuy{~ھظֱԪҡҔԈwhVH<1!e(֭3ȰÇ TH!ċ%VhGxqBIf ɓ*#D(0f˜[|y筙<$)T܉]N)) "uQ$+CC^bŠa[DBD[ڶEI.Ļn;]",]wߕMޒUQu"^&.(fV5XAta+5obZZ;%MlH9*"1#*GWܖ;B]lӰ%#˷G~_d=ַ6yǟ|t|Q`сC!!0,#11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122112222222222222222222222222222222222222233334455667799<|kCjpLZtTKw\=zd/}l!v %5Ke~¨ƧɦͥФӤ֣٢۠ߞۼַֹֻֽ԰ҫЧϤΣΣϥѨԭٸaH*\ȰÇ#J<ŋ3jx0Ǐ CrIR\ɲK7ʜI:ɳ͟ _ 2&ͣ2mY_ϧ=J5HPH^T:`΁ٵճE)j]iY`ÎTxSbeۯ[ε+5/޽|i- @c /5qcP%|e%3Rb 蟤>qqX|:MʧŏG}2wݼ=& 3k{|M{9ΉBGVb0~o׵k@V{FZt8wIHIu|e}(n_l5]C[hp*SBQU_׌af4'?6f%`%T]z%.8$"QL''s<B(g#% 40z)b~36b[8egq)`ifCh~4"_'sUgwN|'`6t"fVptX $ N Rd陝*t}MpvGkMwXSdkZU'WYٸK{n _*гFPxߓaцT6jC+O:EBA,n_ Q>6ů\Q'x TYWATʉG2RӔ *D2>??A}ACwCEqEGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~e!!2,#    #%(+!-!"."$/#%0$&1%'1&(1'(2()2*+2*.2+12,72.>2/F20O21Z21h22|222222222222222222222222211111111111111111111112222222222222222222222222234567;9?;B=E?|H@sJAkLBdND_PDZQEUSFRTFOUGNUGMVHLVHKVHJWHJWHJWIJWIKWIKWJKXJLXKLXKMXLNYMOYNPZPQZRS[TU\VW]YZ_]]aaacfffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~eHAHu`_.54( ) > : (Q'M4yJ%E`a_&LdhНѣF12% "E:Q?SKJԁŠP)9ՉoB-d[>r@@pBBkCCiDEhFFhHHiJKlNNnPPmSSmWWlZZl^^kbbkffkkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~-H*\ȰÇ#JHŋ3j܈0, CIɓ(Sʗ0cʜI̓Qjɳϟ@bAKH*]ʴ&Ѣ; RJիX6ʵהO٫_Ӫ]˶aX5۶ݻ\r3:p_x t khEx*ǐ#|z׭[?6f,Vl֬^͚uѷJ۪%Kjs~1_M,^μm˴V߳`}oO태;t˟3Jc\cł}8 $}8AVVXAKY Qf̒JH!f(TKj VNUhc,ݏ$ֈDJ<%be7)IK?.dVX%`Ri%KjU]~CcȥlyJifYix)^B柈g?fhi(Vʜ#iUj駬3>iUF9顠p*$_Jf :@m6W+,~e\*l6YiJ[]]k֓N?yg⒫MrJ&[ګ/^]+0[l0I!!2,=?"#%&'())**+$+A/"e.(0.101111111111111111111111111111111111111111111111111111111111111111111222222222222222222222222222235586:7=9@:C<~F>qI?fLA[OBSQCKSCGTDGTDFTDFTDFTDFTDFTDFTDFTDFUDFUDFUDFUDFUDFUEGUEGUFGUFHUGIVHIVIJWJLWLMXMOYPQZRS\UV^WX_Z[a\]b_`dbbfeehhikllmpppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~eHTLÇ#PPċ*0W1Ǐh S.HI*cdّK1AΤYRʗ9u'O@fܙ޼n5q&U*qfyYIUe\ͺ.ݳ]o`l%"f׵8laڝw!lJBk T@2r8VrALcz&XŲd ӌzjdMsyG3Ο+ !!2,p@11111111111111111111111111112211111111111111221111111111111111221111111111111111112211111111111122112222222222222222222222222222222222222222334455667799<Jj ʵϤśիٳH ;heʝ&[9K߇R2)+*]##/LyѤrgR_bdve4)P˞;RЀ͛6g{ 게ȓ+_μУKNسkνÀOӫ_Ͼ˟Oҩ 8 (  (à 'Uۅjțfi(∕)h"(Nb-"1&6c݈#e¸bc4 dF!!2,WnH)     *5I!Z!#j#''**--//001111111111111111111111111111111111111111121212121212121314150608/;.>-C+K)S'|[%ob#bi"Vp!Sr!Qs!Pt!Ot!Pw"Qz"S}#U$W%Y&[&]'^'_'_'_'_'_'_'a'_'_'_'_'_'_'_'_'_'_(`(`(`(`(`(`(`(`(`(`(`(`(`(`(`)`*`,a/b4c;eEiRmdtry~~~eH`y(YȰÇ#JT<1~j2Ǐ CId)M>e\9OG0c<%K%3s J;#PHK-Zhҧ 2*TSeTݹd„%VNݪs¿f%H6灳Ԯ֣5|/չtMj)?}*i6 Ŷr_,* (ت -b0}4J[_v`jȦE9pm2ۄJDйGo7w?zfAlROx 5}'[aZU~Ob1gS$)a0];p>hT$gb("ANJbV h'CM㎎!5E3BNF9VR">"5ӰrcVԒɥ4D,e4F)M4Sɦ>4fPM34wF/ 6Z\N(}R!DfiELJh駡jӨm*K"&y J2P+5+'Ё:_!!2, *5@J U "^"$h$&p&'y'((**++,,--....////000011111111111111111111222222222222222222223333334444556666778899;;<<>>??A}ACwCEqEGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~e!!B,ke5)'?&?(@*B-F.G.H/J1L4P6T;Z@aCeEhFiGkHmImInInJoJoJoJpKpKpKpKqKqLrLrLsLsLsLsLsLsLsLsLs Ms Ms Ms Ms Ns!Sp#_w&q),.z.h/J07131212121212121222222222222222222222222222222233335577::>>BBEEIILzLNtNQnQUhUXaX\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~~m^QE;/# HPȿ\ȰC #|H"C'Z1bACؐȍ -GM Q O ON6 "X4@`09f63q9,v<%xF&M(K$BBHNY$_,i5p8u:{;=CJQUȤWŦ\dkqy}ywqqkmjhheebb][\VOI:92222221212121212233:-N%ug%tu.v7Ro჻哹׫ĺĻĽ;͸H*\ȰC"JHŋ3jȱE`<I2"Ȓ(S\ɲ˗Oœ(s͖5oFP@DѣH*]ʴӧPJJիNjʵWmVq,YfˎU+ىiѮۖ[q]f۲xp&gHDl8޾;n2w1ls̕A_yhɤ;רB^mfڷYr߆y %'(Nȓ+_μУKNسkߎkm3cɛGO۳W/~O}̈́ry-Dy  bء z"8 (b,n"&^H+蠆0c{8(3(dCh`D& p@5PF)TViXf\vQ'dL{gLͰnf{oΩ&tWxiY}g{晦%j'!Th~R*_^*iN*)(!ꨣ j砨j)jz:뭶-믾r ʪ륝V+ {,$,bl[+r תz,?K\›k֋nlp [?d;cIwX 2$lVrlr(K3#! 2Gtм2)+ęp &-7c3͸2?Xg/,_7K vc=3hg Z2d}6O,7Yۭw!77-k7;O3`fwkc:rd1C3nkze{<?<#.?+O|C.x!3|{5aݷ|aO-~r5(yÚ Ȳ /| 7p]c"0A&_zc%p8̡w: "NխK4 :8tCdW('ad'.ɋ[\hE,PaLY،MT.qOxbTP(F `#ELHA D">F2Rk"9F=$3Kn>5c L6FpAd#!7AE?(TFb$%"zY'c HVL`3eƤQ8Ɇ&r t '8IoS$%̹NtS쌧; yڳL>߹Oz'?M!T<7Vw#X3aED$0 ?N,"ьMh3J;x.MiDCjLԤ7m)J3촥ϖC'QTҬ<0fSk[ SƵ`ucg_V 7q H@lgKͭnw pK\Iz|$QRb]1*JpbZxb4c3YXFxޔ1#Y p76|PơNHo{^'IԢ"n3j-p3aC"RtWE%F5/v[qK^zo}Ul`E-cFН,.Kbʬ|Wf%{ i}14&XӚBE1jA:xγkA:yπ,gAЈ3F׹ϸ91q43}iNwӛִ7=sFG?ZGjTnƭar"dkj4 u5"䭆yGlj B9̮F=lŮ`]H6nz.]q{z6&*o]໦p r\7h%}ޙ-UyUx~p7yQ~v+y s|*W MFJ $ @DXWy5!7aAkȡs)U& q}]eqm~k~9'.1/-X.rb^aM~?g3^Є8&[ϼ7yqXGS 7Vzocvv(*j[BvO*NmY^1~_eⓗ dn] w?^szD p0ﻟPxO?C&r!H~GgȀ ~  (z5ptM~Ƈz|{` dYs^gz~tr`Ηvˇۇ|؀g tX. x7hTXxXYx\hg`l c ԰ ehh bqilomchl Gz|x8XLn @  ;XW{|G^|7(`mhXhzzp~7@]霻i≞@ʹ /Ʌ294٠Jx5LٓZ ړ *%ڡ(7 O}8Ŵ Y:E$E4  cpW8e;ZFl@^p/X8E@^[ڝC/r Tj96ڦ:Wz: 7ZDQ;٦sڦ UPa[9[@D|ʦqZDo9 8Pu` kJru*}꩛ꨣʩjZڪ:`wT#k@]*;jtpyEdJ^W*zozW**`:e8YD녭HXz*yw  :JЯ +JKhP Siې TyTi0; P{p cK(+,1[0K698;>@- e)Q;;p~ Z vBKF˲@Z 8@up < U۳uK2KyKvsg|} @Pt 9P+w[=k; ;k.˹ P;K>K ,9 WVPznphZgJh KgGtYgכ_ Io ;ТjTŔ:֐} 2*s;C< , l ` CQy<:0@ l~p8Ç  \ 2 0SL1SP 2|USWF`| @T`Y[VPR p ^LDLfjn rLvElgkos\wblɘaYaLźkgh[ {[nKJK'rn{| j2( VVz1L\,l<<| `<P 0ywpvpyR` E E ]#m"!M'+-2]0,m*5;3}(] L14^6~8:^㯶>>@>D^F~HJKBPOw@ ]Jo ;װ =D nop\_^_kg[rW νg C@V yG>"%/@4ȕꪾ>^~븞뺾>^~~-[JBҋ KN]gKq~|{{-~NػEN؇Ng^p\LŋQ Tp &ūƀfI{f_ "?$_&(*,.02?%?C'> ծd'\@V>b HwvM<;NƆ^l֦kϾF Slz&o_/?_D?_Y^Юv^m^@Nv=HKE6>غlmngd߁Wɶ/ot_tӟld|g~\o6V`RP ;`Oˎ  DPB &RB A !JXQF/N@ ttDRJ-]S̍u %BjTPE4TRK>)'AV%ܼrWd%ڲi*iuśW^}6V Π ]JdC H8DD :ȂsAR 8 Vq!3jA[jXǏp0ָqR3a8[٤ngnuֹ"7j$W]F:]B^tjշ^B.4Sl`F; @$bÈ2N N"P62CHV;Yg5vqh>Je1Y\|;۟;[whqOR:uWg@:_>jv=J@,}Ry2O7FLVnxFmShGn3Uhdc{-֬3ahv&gP15Ёя$chPta![hH{a$զ0qP R -ѭx/!6l0#[<+Y*Ep$Q2g̜BXʍҋb26:tjf4]G6Mnvӛg89NrӜDg:թA0dd<BМg(VCsKx-8FAw? 3% hv#e17z+\}ƎN fJUR6j/iLe:SԦ7iNuSԧ?jP:ԚӨ1AU+eS T:(jV95:ӰլgEkZz֣BIUj&S6Kn tkHFRկSW pma {X[|#2Eb 6%b/bݬd9Yvv/iEжV%gQ[Z/puUۭL cH,qk "e.t s4WеsF4ΥsJu.y+~}/{ 7/~;_W_Pn_\Gӷ pŴQX<@.3R p#@Qeh8.qrMl yuq3L 6"/N,$bx1} ?vB.2qdy11d$?FNLe,[9]$A=jT~sqTil?̋b`# n0+g\5 ^Qu.tK\6߹ˉr/J7z҇uK?=E˳|[/O{uW:w{Xb^Mֹ6 W7ߌQt x.5to>oO>_ߌۖl\fj8sXk9^pd{D@Dij^9G ZpGD@@ AFM(!jhfAAA! BB 4BDBTlB"\#t!LB**,B&+B1$2@1mnP5P6m1_(Ln< XpC6TC?6hC6k0D>P(6^Ais?[LoQD?\A?EO$PN>LFETlEU|EV_F_f]6`B f^a\b aP$_v vb x=bR+.~-~ݾX*,&eb4\"a/v^1Ɛ2%U;ܺ_xc8~9b<&dt= G>A.IN>n俀M6&JtmcL NV} W&(XSFe[\UueXo徰+[ ]Ff%_ffmB8b6f1Kk&enffZjelgR^Ssvfh֋afp>qet)vvgk~64;Om~f`w@mhXF_}N0`@~荞i-AI^6i:ᓆi!Nif隖yݙiZh6Y+U-f-꣆1 G nܧf0ct>\ w鵖jeqkrFY6Ni&lzkVl l.N)c0XƮhlhkl l5Nhvbdv -ն`}~N&mw>v ^d]kntam-v!njޓ3Vo~kvd^}陵 Nl^64oT=7plpvp>L /F od' ٮjlwH5ok@qŶq1 / Pq* O^#nQ(r*wq4r(r 3r$s.s>/Gkos~sOs,?:s.<Oo?ws@omA=_sCO;`E_pFwt \%[t &5WPQRWptU_uDmW=OqYgV^[l6FuuOa7bcwoF_vfGeg]hoivjbk/]lvJWiv?vwjRm/w>wM CtrnZ|7}'~wqowx'[/BwwGUxex?ي7xxx`ԑ'y?0v'#7ykuy|yE#ݮyז RPzKz/[>zgygޞϨ'풷ܯȰu?x]Egu0{N׺lzGp'{'_Cğo|}||{>/|̇k|7| ѿ _?wW|q/g|3ؗ5j#z5DŽO~[k{ߟ~}Կ6~~~Ns~?gQ(go/ַX,h` 2l!Ĉ'R|"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2gҬid?H"꒡B-j(ҤJ2=@R"i*֬Zr+ذbA4'Pjײm-Qr­;u,޼z/`e j0Ċm,p1䊁'Sl2̚S9pТG^qԛWn5#;Bk85ܺ;‡/nfR@a*9{˕8ڷs|9Ǔ'Mjy׳oŧo?hx o]: 6Xm2x!)`II!!׀˥!)&!]*5"18cK%"XPC#AIxx$y;$EB:$vfJLZ9Q] Q]zv6%eX &m679ygҹy깧`~Ew ؙ *(V9%O:)~v(jҔURi[)р *Sz驱ʺhԫ+mi *쓎d"Jt2{-1;-Zk+mQ{jڻ»/z++-i{0²9\\p K8Zy…cړw :|6&*>+"ڹmRN)*~v0"89={P|Þ߫;'R(??O]h%?(/;`u;z!| #(A"`"? r(hB |SP$|!0ֱ6\(|3!!!y(4"(E4KV G6!N^d!(0qd 5r0c|{|hFvc=rG{")HQtwA2G!#)&6o$&}IIr;hBEfT'Si4%,3JU28&#&H]rkd4x%021Fd* @y\J_5J<')uE$&:M[6ѨKy3'@MO< Ѕ΄%B#A2.g+ *эF(g9>S=)= ҕ䖦>Q*6Ca:ӝگ7FQn)PтըNURӥn3Oc*UԤXjoՕRV+Zy5$ejZʡ*g+ Cȵ-]rB~=*XXkOլkd%^լ89ٸ~֤:گִjZj!iծ:2Un*Rַ'np Cdt5F܏Et+Z]]R[aYջvɋR󞷞MxUζ&s m6Zw[o,&s6b' [؊q~';3F'kU(:K\r/cA琉\A#7VkW, 7OrmL*;X2"RA\.[_r~ϸ_2wgNfx _ͩTcd;{sg>W$Ś-::o-A7w-]RҴ/[Ow򽩍t_R{xtOiVcmUӚuI^~E=b3jFuHlf9^-eS;oFE(ND-=inm|}LF{&Ejzmk}!+^X|f>=Qlb w!DB̢ pWCFviU~Gi,e.m|}NS)ҼA+*Zo<7zE|7݈Ez)}:֑qS^'þ2 @tFwlO >nv0u>v\]~؎;QV"#_ "oy[nxC?Ó_coEU?Dַ~_cGEer=u_Co&{΅B_\~S7?[7O_Ͼ?zB?`y? ן]^~T땝}] O2 9RMj`G^\| : `   Q `֕``  a6Ma`2!M NVa]araDrOya6aN!aːanHaa" O b"ƨ1#BU!J"8b%j"bbQ&%zhb((b)>R'"b+U*¢,+b.j.b/&V0 /"2J2"36#<,F4:55^#d)n#77"8#|&9Ƒ,cu:. :V:z#֣=r>&>v #@b@!A*;*&$DD!EVdp\މ$|$HH$II$JJ$KK$LƤL$M֤M$NN$OO$G4$Q$QP~PS6S>%TFTN%UVU^%VfVn%WvW~%XX%YY%ZeXZeRfRRC50\%]]e]%^^%``%afaa&&b.a6b:&c>dF&eBeNeV&fnfvff~&gg&i^hfi[JD8 x7B8f؀nAz̦or6DloRq&r.'s6s>'tFtN'uVu^'vfvn'wvw~'xx>Qgp ȁq¦ &sbCy|&'r*gk2D<7|7(6\Al7'lzBy(gpz#AN7P'f(n(rv(~z(h(艶((¨(h()QR~#'4hZ(h~D8<`g&Pkp8j.' Ķj':CB$냎*:fx9̢,Ҭ,m---&m.F-NVZ-^f-bnv-؎mmp995,&.6>.FN.V^.fn.v~.膮.閮6&8.έg62ݶ Ⱥ;t>C</yn oN/V^/fn/v~///// oRʁ/}.oR/ZN~#$<&Cpm|6070Cw00 0 0 0 ǰ 0 װ e?ho $6pno0މ<ԃ,r>'2.ϲ..2//s/30032233's3/3G34O3W4[35_6g37c7o7w388s8Q6?:2$eV ,3>>3??3@@4AA4B'B/4C7C?4DGDO4C%EGt B$ȳ \ H4II4JJ4KK4LǴL4M״M4NN4OO4PӴ%pz.,5S7S?5TGTO5UWU_5VgVo5WwW5XX5YY5ZZo5!`Qc!= 5^^5__5``6aa6b'b/6c7c?6dGdO6eWe !%p\#;!6ii6jj6kk6lǶl6m׶m6nn6oo6pp6$D%`'gC&<7tGtO7uWu_7vgvo7www7xx7yy7zz7{{7'p((r3GIm7788'/87?8GO8W_8gQQȳ8888Ǹ xѸ889xG1I/97?9GO9W_9 w993h9ǹ9׹9繞u9h{::'/:7?u7}9 o:w::6$q77/ Ԃ:׺:z:;;'/;7?;GO{ӷ}{8]P:;;;_}SQ;{׻;绾;5(oӻ<'/<7~SDڋ'y#AA|B<=SS>闾+>2nׂ˺ @~>?>#> J~}Lԟ =~?Ɨ=ֺ3:W#x>#o=~?@8`A&TaC!FHbE RaѠ@Z$?'QTeK/aƔ9fM7q2LO?:hQG$LFEN'r N(6!!gѦUm[oƕ;n]w^[1ƃA$paÇ'VfRǏ!GvYʗ1gּsgϟAåRtiӤ9NcV#K2=vm۷gJֽ7->xqǑ'_0u 6nױgwwgW>|yї߻7[ ~} ׿?i P |K#( /O ) 1ʿ9A Q-/PaQ1#RQqb\Q!,H⻑%lr )+R-/ S1,3LS5l7SN3m;1=#? TA 5 MTl4e TI)K1TM9OA UQI-SQMUUYmWG=EiU&Gq- ]y_ Va-c;em)gij'Zj[l6[qv\s7RmURvVv獗{w]rE_wzƷ`}7aX `Xa8b'IWfQFڕ{jo]8fgegggo&:蛇FhyizgjiZ먿:ik:6{[m;m&>9key候!|ʛ|5s1yEs,?IЄt'CЀʳ(E#jьbtܨG;zP UGEѓ%MI!R1Do:ҜԦ=ũOu TA-PT%ӝME<eWN5TjUzUFΪ\ͪWʮd XZִUme[Wutu]:Wuwk^X 5laWu]eS!;!6ՠeaVlg9YR#mi?Ѧ=kA [v}-mo+vo[ߚnme\ڶr ].7=nnk]bw٭w]񂗺%w͛{o}&˧ml/7w \`X V_#x L k87acx.#` QLb'_bX=^cc!<c%4^c(O=7enx`2|0yhfs,f79j.3l4|γ ? :c3lA+ss hHѓ^tFSӕִ7}iNZԥAOѬ3jYzֱkh9J8|kaMld _?^i3v6 kk;m&nvM|[p 7xn\o8C׺8cx %qx8>\ K#OyW0wygr\79m|:9΋N>zӅt/JwЧ~u3Q:ֹuk[ءkw{v}`W}?Lds9 /x'_xGw|'yS~󚷼1xw~|9ozɋoQ̗~SӞ}wo{aO_wo|O_o>o}oWMw_':֑~_ݟ~븿/O0 "&P/3!pACPGEIM0Yp]UPďh&̏E!x0AwwyPPp 0 P P   P Ӱ  P P p Pq 1 q 1pak03<A1EqIMQ1UqY]a1eqimq1uqyc511AA4~bQ1qAO#4QQ'@qQqM3$2 r 2!r!!!!2"%r")"-"12#5r#9#=#%RQC$Q2%Ur%Y%]%a2&er&i&m&q2'ur'y'}'2(r((2'Er$5$W$)2*r***2+r+++2,r,ɲ,,2-r-ٲ-Łbxa.yR)k)3-s0 0 031s11*2..2//C3=3A34Es4I432./-/N236Ub3/4m6q37us7y75's5YS/]A`S6h?|993:s:8U2}8139um9:3s>>q=y2_Q33;@ @4A=<`??g%@Gr@CA14C5tC:l T;%BcB{CUtEYEu8l D@MQ7\G4H0l  p:ttGIGucHJ4K.AKDBT24MtM?3;3G'L3LєM4OC48sLNN#cO PU:OJTP5P#Q)R-458RTRREuTI13?9L=NA5TKUa5VT#TNWu)[)duWyW!OSS8ourUW}5YViuSٳXXbYZ+Y5J([OQUu[["\u]t\S5P\u(ص^uEYY^_@DU(6a6>V [(vb)v:S;#'*c=7/\36c?dQv4C^GdK'R6fe45=]e!eMvf}gݲf)SXɕeuvgy6 vi,W6g֝Vij+V[jk2kukklVliymkvml߶n6n嶝nVf6o=iovp?opwb pm7r)qwqVr1Wa)rUr3sus9Y.tMw]EwtmtOu5uUVXui7Ya7vevkwwevq}"XE:+%$G8{MWa9Y cIsix;^}87ux1gVU3 {XOl0=xA)xҌwMxTҋ D鸏ҍXwDVى 1VEV!-َY=/eQA#MaّUjm?p9 ykؕU2uϘ[d9Si9>~YX̔ٓٛ% ْǙ}ٜYٹ8o"CوٟC' @ 3* @0` J *+ҡ:+ J Eu y+ :z09%-gz+WzR @՞W2Z:+#z2iZ@* }:QMZUg Ҭ)`#:ᚬ?வǺ/z뺥ٚf-z5 u:Pdঝᚯ:LA:"z:ڶr O:u`wವy[)q &/;*Gog`)SS%ڵ:{7; کU;ۢ9;3kک{*_[{6x%<[)ڲ%çE|7?C^=9>U^yY]7}iwm^q>kwy%~`1m}j܅@*))m>r蹞*ƞ+>믲3@3~飳*z)q)+*m#뫲?3*#R9>>9>>>칾>~[:ES?)*KY*?3)_$>#*}dfs/Z 'U)^A ,(f@G <(D8.@=:<2ʕ,[| 3̙4kڼ3Ν9űP^: -;zJjӡTZ5֭\z 6رd˚=Vklۺ} 7ܹtmcÐ)J{pA#W6pC)ihcGDI"㽗UR`fmd`GH| ;ٴk۾CESR?<̛ =1fƄ ŝx|i& lf6XbaGTHz H`` PDRM=JTS9anaaQb"ev}mdh)),xA&fI_=ceb .dN> %n &o%%pa^~ f]Hf#H^v(:6y,"FwQAAފWigFl(jIhzW(m`^i69VF(Ijz3eC$D1D|YB&@,z6''ʲ,&z̊'d"iKn*u`*q ojۏ'ic pLpLV.;o?O -.oq np o.*̲Y\oLs6ߌm"ZrrrB}FsJ/tӶ휰ZJtV|t":u^ 6$+<5WZ=]K`N[s@@Ц]tv%}؊/Nb_))My]0) |፿{)=T[{e;]/qyLy-w'彷Mo'I-T6[PXZg\wh Z.aǥnqlOԮlf[{ܞl@!!2, *5@J U "^"$h$&p&'y'((**++,,--....////000011111111111111111111222222222222222222223333334444556666778899;;<<>>??A}ACwCEqEGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~e!!4,P"""%%%''')))+++...111444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~ 7H!!2,P  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaammm ] H!!),Pnp22221111112211111111111111112211111111111111221111111111111111221111111111111111112211111111111122112200..,,++(-%/#t1 h4^6U7N9H:@;:<5=0@+B'C$C"A ?:531/-*%! ###'''+++000555;;;@@@HDGQINWLT^PZcT^eXhf]phawie}hf~hgiijklnpr~tw|zzz{{{|||}}}~~~SH*\Ȱa*#BtHŋ3jȱǍ?yQ;z\ɲ˗0[Ic!̬ɳϟ@ J ē:]ʴӅJ#eDXju+MsvJYcϮ+VڷpH+#[uJw/ƻW ̳/aU≠HÎVA8ˈ1x$'d͠mШ5-qqבWn-oͻeSepMн1VS<ţ5>㹶>:ִO嶷y5;׸> "/~_?!!,_fa2222111111221111111111111111221111111111111122111111111111111122111111111111111111221111111111112211221212121212121212121213141516181:0=0A/F/L.S.d-p,r*wr*pw)h}(a(Y'R'R'R%L$H$G$H&L(R)R*R+R,S-S.S0T1T3U5V8V:W=X?YGY}OXuVXo\Xk`XhdXfiWgmVjqVmtVrxWwzWw{Xx{Xx{Zx{\x{_x{bw{gwmo|px|tz}y{~~~ÐǍˋχԄف}}|||||}~聸脻釽߳ݹH*\ȰaBPJX>|Lܸ"Ǐ ӨE|@:@$Xŝ Y$54*^׆ ̗Ƥ+C)l& UFMZ-Js$Mu7VPʡR#R ըנd`E 8ذ (R|ECE݂|kTӊ6XeЗKfJ4Vbi' ȕuФ?;rv톷*_NY- &N:νOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*ꨤjꩨꪬ꫎*무j뭸;RFI#@ۨQk1nC s'M{'II(l1$( F - FϽ+fd̽ >sn|o0"b඿aLP >(;!!),*_a22221111112211111111111111112211111111111111221111111111111111221111111111111111112211111111111122112222222222222222222222:0B.J,Q*X)_'d&j%o$s#x#t!qy olnamYfN`E\?X:T7M2F/K3P7Q:!R>&UD/YJ6`R?dYGd^Rbd_ZehRerIf{8`._.a2h0h/i.i.j-j-j-k.k/k0l1l3l5m7m:n=n@rDtGtLrQsWt\vbwiyp{x}SH*\) #.LJŋ3xq9HQɓ(9Z3oŒ(clR"KasC; ك$>(oh 1+ΞXcN##S TvBլp3~-Hv-FjŸ1F`>uۿ#4K7bO-ecɠnٴ3\C63ӢMS^jTGM'Do8;8zԳkνOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*ꨤjꩨꪬb*무j뭸뮼+k&6oڳE YNP# -"sYd?݂0a\)t .Z7$!!,%_a2222111111221111111111111111221111111111111122111111111111111122111111111111111111221111111111112211222222222205.8,<+?)B'E&H%|J#tM"lO!eQ ^SWURWLYF[A\<]4`/a+b+c +d$-e',f+,f..f1/f32f64f86f;9c>;aA=_B@\DBYEDVFFSGGPHHNIHMJHMLHMOILRILWIL]ILcJKlHDrNExOB}Q?S=W7^9c8h8m5q5t8w=y@yDyHxMxSwZvctmrzpnkkkkllllmmmnnoopqvzƊˆ}}|zyxutrrstvyz|~H*\ȰÇ ,H@03bDȉŏ C)P"E (\B-H`$!IɓI(U&dFJ{60G=J'A貦H%FIh2$@TӪɲ1t[0˒!h*k^-:7^mngؒȜe,SU)a 4EdWuKfc*1>JX^ͻjુ!E|\r/y6"u;iÉ߁Xj-F'sߝ3G嫺w_AѦmQF߂kG@_Wu1ZicXd)R9hxtCX_ZA^F`FY!cTVxm5;R$$M6DPr5Q0YGvQf#VyZ)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*ꨤjꩨꪬ*무j뭸뮼+k&6F+Vkfv+k覫+k,l' 7G,Wlgw ,$l(,0,4l8<@-DmH'L7PG-TWmXg\w`-dmhlp-tmxy|߀.n'7G.Wng]tA ͔s?̠O͠e4nV>{^h?w|yVOΠCѯkE>B}BEqEGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~ziZLA7.& eHǰ?#JHСE3jx#ƍ A^,82I)?&@$B~"?n=b8P3A/7,/'& "''&%#-./24669<:>@;?B;?B;?B;?B;?B;?B;?B;?B;?B;?B;?B;?B;?B;?B;?B;?B;?B;?B;?B;?B;?B;?B;?B;?B;?B;?B;?B;?B;?B;?B;?B;?B;?B;?B;?B;?BA@BE@BG@CH@CG@CE@CA@C<@C<@C<@C<@C<@C<@E<@G<@J<@L<@N<@O IBL"F:򑐌$'IJZ̤&7Nz (GIRL*WV򕰌,gIZ̥.w^ 0IbL2f:Ќ4IjZ̦6nz 8IrL:v~ @JЂMBІ:D'JъZͨF7юzD dD#FؘdpP)G49\#%n="Გj iW^4L$HN3d؃J8-0:*-6'*2%(/!$)!%" "##%'(*,*-/202935?58D8:I:P>@S@BUBEVCEVDFWFHWHJ[KO^NTaPYcT^fXck[gp_ksantbntcouepugqujrumsuqtvvvwwwxxxyyyzzz{{{|||}}}~~~}-HA 7GaB#JT(ċ^@Az(r`ɑOjD#*TKbʜIsH0k<:SN_~ZM9K|pfTD:O ڙ}[U)Mhe;`—{en*eұB w(KFi3ɐ-YϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μУKNسkνÆOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($?ۤE⃊=n(iMkM @B Z@!!F,1Y)C!$p'*+..00111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222333344557799<<@@DDI}IMrMPlPSfSV`VZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~½¾þþĿ-4*C#(aň/&̨qbDž7DHQ%- X K#'D3k6h`A ҴYhЙY\4zNLaT}A)w5Ԭa}CY";-\!0P=k XV" pumKU#^*k0!!2,8K7+1111111111111111111111111111111111111111111122111111111111111122111111111111111111221111111111112211222222222222222334353535262|61q61i50a50Z5/S5/N5/I4.E4.A4->4-<4-:3-83*31(/0$*-!&,$*"',%*/+/3.3527938:49;5:<7;=8@:?A;?B<@B<@C>AD?CEAEGDGIJMMQTQW[U[_X_dZdh]hl`joamrcotepueqvfqvfrvgrwhswitxkuxluynwypxzsy{v{|y}}}~~~eH*\ȰÇ#JHŋ ȱǏ CIc2J\ɲ˗0F1WY̛8s2?6y JQ>ZtӧP9&%JԫXfJժ֯`O\UhӪ8>|ݜYK݅IOٻ;u ^jk˘Fy[oa'XL4({E)eNװUF\5 ѱs떪jX\NamQ]s1NӭkνËOyP_8=>צ&߀G~&HTz >b((NhTfJr$bFص(܊0F䢋1(ь/ڨ#^8cC]DtGLI.@C>Id@!!0,c> 111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111221122222222222202.2,2+2)2'2&~3$p3#e3"Z3!Q4 J4 C4 =4844515,2(0%/ *&     "'+ !3##7&&;++A21@84?=7>B:PFASIBWMDZQH^UMb[Tgb\ljfnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~aH*\ȰÇ3c&Xċ3jȱtIIS@N9ɲ˖)|IM1gf)fJdL cӧ8UJU6/X<*)ŊJvøNo_"ʵ9\ 7:s4SN^|EX㑭s8rS{̹#'4HAU]9qS:#e6-.}WٗŁӣq㼓+%ҧe,ʳ2tX{q'ӓ",tkSV?^)O|)'L$Y#&߄4_gd0 &x1ʨ}0hcvηcaB&!!2, *5@J U "^"$h$&p&'y'((**++,,--....////000011111111111111111111222222222222222222223333334444556666778899;;<<>>??A}ACwCEqEGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~e!!:,;  5GN S X ^!l%*u.4{37{4,l4-S3.;3033332322322632A75R62d=2s>3x:4x45w2Bp4~W2I22222222222222222222222265M;^:qz:b6\2[/\2]0j5t9=FĕOě\chlry|xvymszVoVXw)Y3Č;8hOs&ڴkЯKÞ2jѱS"LuoܿYvY4hУKNسkνny^ӫ_^ǪV®rTYP>ǯ7&.`H`!0(!^h)b a&X('2*>H"829 c=.HaBfS5PF)TViXf\v!`ܘ?gh'| 'l 'qYtΙgzygvΉg{ꧠ{*(q 1SAG|>֩*)t"GmFDȢꭵJ뮾ګlqBR6l I(DZjꤹ*묳ɩz +J.b qQ!o p'7,0;lpOlc\Cqs,r$ yaBfiCc3h&O>_"DmH'L7=4,r0ˆQ4J\%]|Q#}fv,1tmx=#oH  y 5{M^(6WN#s砇.褗n騧ꬷ~ \!a$"m&m%OPS$KB}W$d_=ޏ鋿q1P=1?^+(aJH (1puЄ!>&@`Ax>z#4a ͷ-^2H8p# UXBO~+(@CQp0M("zba (Ї.rъ^ >f=pH:x̣>?Du;- h1 NZ~P;MB [J׺xͫ^׾XQT9 bX<@K%GFyۛe#KITf7{YvֳleJZ͚ j1k͒zUe[n/jm{Zv}-eYVMmpY.Wul[6ϵnte\`%vK+m/+Z׷z]+_Ծ|[_/o [vM~_w0/< v}pu-b䆗ލgAkYL@8*$"ZJ a!v/{?^"[F~ߐd$Yc<-Yr Cxe, PruY_N#\f7k./z(f<ZA6te>יȅvtgHo9˄MDozѝn1mv'=JթNAjO$q#6Ʊ"P, !H$̆*Wڑp-mmO;ڑ6psޞv͍mm[6=nw_37l{MmG]{w;woy+?8!No%K;n` (oG6Gs#/xo>9~D!_U8NK(~#/};b֟~#O}[}>~o?ׯ?~h}׀~X}շw#x"X+0)ȁ -88R}=}7~|coGc΃|7XX Xx`5WhVVZ`Yh5a\8i8_`Pd`hj(y[|}x؇{}HHx~(xHzi舜XV(hHȊXxH(،Ȉ(XȈ(޸(ȍY| W|lLT8wXhexii5ɐIȐ9iI ّ ُِ#i!y(y*$d ْ %9y-;)i<= *B6EIi'ɔ) ( "w}p؎ Lv  Pc҆_r viy-uYgrY؆^`nXy闽9T aٙD(@Ju×' % ` pit229ZpK&y-v8U&e(o &Cma;9y)蹞`쉞9Yyi9O 9JY: Z*ʞ :Ii9P{`Ś %  s`s2QLa``>j@ʣC 9*n=j>;Z^p;^Ф15H95ZG*2^[ڥazaJcdnʦ3\z2kp g:nH`*xZhZڦwZ}*yJf*JgZ` Qmjʧzjm zʦ:~:Z:z*꫱ [ zg:R0e2:tp] cǎ( IrPqkr@1/Mʤ v/E PZ <*$0 0 1ѱ   H˱K$ '& # ;"˲2+["{ a40[0;9KF;*/B AOU-P[]kG .<+V;XM{\[b˴i{0;0r@v‡`yT 0ЮP0 /Cࣃ0]PpHKv8룚[[/;{ۻ뻶kŋk ; ۼ޻֛[[}`;[K;櫼;Kˋ{ +[߻k;0P+sP{PK@;34,6,GXS A`@;^(pv>SZBUL`_(>95\6\8<7ddi-@5*m?-2-IGM}O=QmS U W3D/\]1]m56*6Z=y뭼30؂=؄=؅t~PH،؈ؐm؉=يٖؓmٗMًِٕٙ ڢٜڥ-٘څMڬMخچ#ۂ۶}ڝ۸m۽-ۿÝ]-˭ͽ٫ۉMFڕ%{H/\Zn| iFMg4iDHhF-M=]}M}M n M--n>^ ".$53>6/n)1;9M=.SU.KQWY[a'iD{;ݻ[mFltx>HjFv|N}kD.~~^酮v>nN.{>~N>襾骞N~듞n쾾뱎n.N.N>ώnNn׎ծ...N蕮Fm'̷ q>HmFmzp?FmwF%?/p'!$O!/.,o31/68/G;?;=QoS_UE?MOO_YD?:_`)/jaXfo]t?vAlsOu|pWe?boHB?8~{To.`Cnqx rnyF/osoɿOpǯO?ѯ/GO98‚>tH`B=0tXQ A'RF$?: 1ǎ&'TrÖO&("G6_O0s2ZSOG{fӠP.- TU{DTOYeZv%ɮdc=+5[lњ̸M9u*$JtFXbƍ?Yc'A Ν=ZhҥMFZj֭][lڵmƝ[n޽}\8h6iڸ#N<|]tWfAK !k^x͟G^zݿ_|ǟ_~0@$;IK<9E\: '0: ;ְ%?1DG$DOD1EWdE_1FgFo1GwG2H!$D[ֈ;(I.UVJ++.;8"3L1$L3D3M5d2Lr&r+0ܲ4PA%PCE4QE5I%ldK8]Y2-aafi^@yL>Wu!gi&lF5CC $)=lwzl1[Y8'pGx'xG>ygy矇>z駧z>{{?|c$H.ѤTd=ݡmx7`8@ЀD`W |"ljR~B;DS`E8BЄ'Da UB2D!\ Ɏ c8A?b8D"шG KY--n( 0;ۇ|D.vы_c8F*DGKPB,D[$cG>я GF;hnv5kt_HJVҒd&5yO} XB@:PԠEh`1X|e0а!ɑC86rx|P<@vna0?,uP ź9>P}:"޿#q9LǽwsǩC,귣5i,cÑ~uPZx_GgS{n›SsfGsE\\9u 0yӢIW:% ;`;Nwk ><#KB OynwU?Eqm_ M`᱿4c9S@i@̫/9 =[@s3󣽄:0 2m9x@Â4A >Z";oKK0y}@w?"\!T;y*?$zK?Y5BkZ{S??4GCY4c5S6s2#4S( A0 λCf<tB.=x,1(,(AG|D͢3=CēLr>xv{/y R*;#C!*7E0€CCB)t0ܴ*`MK_`3@,C3?6˂4=$ÁB6 d63o.NOt#::%L[$?X$udV[2/;;';4aE\BF.TCF<G+<C>c7T.\!S8YKG밑ƗK{K2lgIK$j@b2;Jz@<+qD3r<ΌB|J\!JAGl+~6 KZOT'|>sh50HE;rNt&dM 0WCNӵUR2d?gI$.#N<$ɒԯ[/j 9R9 >zp= uG?,G#%M4@TUEQHPE)IJ#-LՓ0E1 QOu*QYI*SATTUMU,)Xu+\8)Z5c$՘‚*S ^%AV{BoW2ZVZz\VUPt%Xҥyz%^p}E"cBh؀ itD]vujmR~u؇}XĄUXx،oXXɸ ؑ%4X/X`XW-ٖuY}щeהՔїٜ]ǓMUYV١%Z]D`ڦuڧڨکڪګڬڭڮگ۰۱%۲5۳E۴U۵e۶u۷۸ڣؤm۽۾ۿ%xÝ#Y uDžȕɥ-\\Qd\!%5]-U]hӅؕ٥uga]}]m5L]eu^=œ]^,Ue_\\_ĥ&6`= 6``Z au`Vva(aPfS7'bB+)"%'batvjb@b >(63)*XS,/>y*c01v;F?Uc fc]^xu: 42:^'>"Dvj>n'Jf'sE:K7Q&;RSbK3HVFZed.v=dx2"V.6EG^|dbn:KO>>~RF;kf;EYNe6[&rv\N]^>ʯbC&g@7:~βclN4y /f|vezigS>Fgbo/ $esZFUg^egԯf0nVNSv}&2Vb.6iU^UdfY?hhUx:;yf6F8i6}FOVjc9ionhfjiL b+e$ujbv'?^jK:fivjnPivnejv·ö~߱6Բfh>EQ6eƯD帖f|FhTThfhy‶&er΂Fٮa_ƦSnda~jgȎD3Ųnnwbo03im;hb*N/m~v*GnjBTVqjNVjnT2oRdF n$6GpUepu 7 pWgq sօqNW"7ry#-'()*#rM]rkrٵ0s12-./'Dž789:Dž'7[?_say;PsOHH7uDGOsKwscxtQu:'uv:_tG/\u"cuJdX=ݙ\jb7`va'Uteev;vkWwlv`vlcyoqOrsעtWjgv?wVQ{wgGY%K~'jwQwtQy70X|.}?*~x/ut7oO.X/+_\y]x_t0go,WX7,`bnyg98MTvx7/g*oW'+`OuWzuH8A??yWy{\z^z-zxxP/{F8zAwyw|x{Wm`z'uRt8{ht_}+X_Wջ'@{.PB8E8<4Oʜ%'4W ='n +CV)ԨRRj*֬Zr+ذbva,ڴjײm-ܸrҭk.޼g8:y%IT,Zy1d4P߇P+̸$h"; 53ʖ/cάy4ʨ?VEj2dw7‡/>12ʗ3oΜof6X1cڙO|0 >:饃E9!?aNw:\JuK9=W;?;ޮnŻ%{˴׾se =+Ƿmܧ|_.K*.ԇn}˟=u'oYky>MowD_GJ)\Qx>}cC(h9 &gP2 ]y8ȾPpCQ s򰇤2!B΁za6 >|"):g ! m?"(1QQ<#}D5*NJYVÕvcqE{<$")?22/Ta 85ER,K#3IGψ$/)Q'No :Sԭ?8BTsDX<#;5TU,W*SaLjW{HHE jLEm DGEPmZ6NKO:ڡ SC*+iJU*$V"]jX2FJirڰ,m#]nU"ӽk%\EbF:6-6B=w "٘0.hgݼjF9x !px#4#S 6o |` {j <-duk 7" Ubܞַ>]Bas5upMg|T$TЈylծpq Xoƺ.kۨSYnX7"ĕ KC+q_|.wokg`W5su=k%xn37DJm^2G8䝪91py2^{'E ˖Ƣ  HaqԿVc8)jw !(,}}]Q)^5I^Q\!m`u \!UYɥܟqɃ2Sx ]e vYT_bI)]9[h "}`b!~Y*V.﵀F #" Ҡ!GV]-`""%QJĖ`12_bi!xW,A$\'B,B,<gQ(I\bc`eE £P P!#Tc#)V䙝pu☕ Eb1d*Z= B`}---?G$Q#.A:_98cR_}Da_diF`#bSR7!=ٵT!bݘT\VaL^ՂaUTm^YVq) \TV\DJ![Z[_ޗYf\ V0z'"0ơY"cXMeU? AaJޤjڢJfeNe^ZhZ\>2̡H\XZY ohFO>#PP'=e9Q!8%d&d%<;RIə\L*؁^aZinY)% ]`j^^qYE^BTFZ5{NvYp͕\zJ9 ]D%1:J)_'DYYjakץ^ۙ9fʐMY1Xmq4n4KAgQRrY$3R֔Iw ɑ"irAmassnGRRl(۽ՉVȗ).y$T34;jȕ&ҡn\ʢ HP*ϒnTj ]jd**:b'*:oj*0!u!檮Ž$ڮ+rEϯNS6NűOβԳ^+6cϴRN:]n+tk|E+n2/+k+z)+i2 E5]+n*&2NîNTŦBMnSǢ"MȎzSRMʮS6MάR2ͦLЖT϶ϊL&RZPV--5m$vmam>P jEMmڦڮ-۶۾-ƭ-֭--֐ւ̒J.&..6>.FN.V^.fn.v~.膮.閮.ꦮ .Ʈ.֮..n//&./6N/V^/fnBoH///z /Ư/V^K֯//#ZK0'/pp0GO0WK _0w0co 0 k ǰ 0 p㶰D1'JoGO1/o So1wI1CnA1DZ1k10߉ 21"/2##!72%W%#I _2'w''o& ')l2*+2課2,ײ-r2./߲.7/21s)3 1/33322('r3O35s3+2W6os_sd378G7#83:sD33<39m2'Q°<>3=/y)>@4 v3A'BA;B/4DG4&.-=߱DgFoC7Co4H4v4wsˈ40.C4J3IIL7.,KnIĴO47״r|B/Y_PKLKS][n!4%825lnUtSFuyእKknA Y)M,ҵJSnhT_VǞCi[T4 \Sa3`+L_va3[WG^{]'uhu1RfWJY6d\uV[Sl4Pof`F\g{@c+ih#G?7⚋x.>uC[|>>~>?/㾩 E ?S~4} ǾG/7(>h@}6??o?w?@8`A&TaC BklҸciA9dI'QTeK/aƔ -jpԉ3 sXΡEuiNQK.:jUWfպkW_VLgѦUmۖq8hk <E$*-\Լ9u4gҢ>M:lkׯaǖ=زqֽH9ҵW/_ 'Wpĉ3wuױӴY[S4Yzv{Ǐm;{}Kݼ{+0,@[1!l 3оΧ2`:0D 3DPLQߣ/a%8y 1*Ze,H'3s@F[/L-=R-r/ďFl8{LS̈́~( S9Kr: <*+ TAClL,.@֌461"TӳjΖr5)ITBQMUWaZTFqDS[{0_Et&4 T+]gP`Uָh=R\%PWxV_ݩOm6SGe7w tqEw9JT^-8rMXSw|oVG1 `p/fXIQvPb}aVhc!/MC.Yy䛁ne(6嘑f83觱˹穩VglM뇜c恳.[7N[mU6m.z_[ۦk~[o^￳l{_{8ǎ`!o)V#<&u[őf\`5/ݥ-O]֨6aG=iÍ]%Ձ5jbcEqm>/iFH>zywe#Z̛__@k-"Yxׯ十E"p nAB%4 QB-t Q؇D,s"輰UodD!1$7]5AMtf![J$E-nZRdqepe4aEQRbG9Αp@6Vq]HA$jFt#hHD="$1IMQlc%7M\'=&ENǔt+Ti-qMr<.La҉<(G'a.ʹO1y<'ot5M@3A,Lm,vc5iNyΓA'׾No3֬?Mn0߂'+P s%AυNlC5?V}E1ڐE5IҐ.dEKaETiAmS3A)6攧E5*|SC=S*U UJRժYWcy<␪>BKVlJZWjo](Ԯy_#&Vu걬eX.6B{]i_YƱ!d1YE sd-HϚX͎l,F/[ZծvF?+К\5 ok{Z%p J\.wէr]:ЕuJnZ]v]׫5xɛ^7a ?vmD*V%D_տh8!S{Q:IVxpG5Ȗ"%Vh8D1Ulx/bP`6F"zy[8@MIM֤d'OّPn@ZvXeye.Gf39h&n=ξ@XM E/M `ZM9PL/t` A X-`;AK^]py#{DiPlx0 07|GDM V0 ' wd+S @p B dW O e (a a PP =%1%@q  &[ƪQ91AqA3iўDq(q;j1H+ 0` TQ%Rq9q !$QAQ @1@ر0 ږ1p  A r r0Q1Q 7 #r 'R0p QQ#7eѸ:!>2$04 L$yp%% `o&im!pA'!'o!B)+('2}R)9*%* +P+#*]-,Œ!NTM-۲ rMhA| !.// bm.AR-00 1AA1332%( ,S1`33[3.a45m5aS6 6P5vs1cS63+qӾt\3389k9y8533S3ڦ 2Os<ݯ<7M9ٓ9=3\!Bm6S#M a~S<TJ!,&484B5!xA36J5F@R*RD[ʓx 2n=sb44H X Gj/JJsdD-sK 4MtM*ʳRtKGMH<_Ծ8t u254J@'*U"U2R5bE?HCFPKToHMSQW*:gUP[-,WEVASUSO~X#MX뽈UYuu?0*-YИќ۾Us\\s Sѕ\[uVIu^ӭ^_7N___`M`ϕ`!`a5Ma1a]*^b Vbb-VG14vcaqdc3֦ddkiveaU66S5f3mf/amVfYֲrvdwgwUZ^p5i1li^UigQ˽Rj/vhMcURVhu-l5köjVZDi߶vjNk@c@ ,Vngoo79p c7vor+wͦ ou`qt`tt`tMWp ^p_ttsAWt[wpYw "w{wuev@~i7Wjq BooW PxG 7{zzB p| "xw{ulj yypsQqu{[WW`W fw|G`~ktw| w{ ė *@7lN . %Jocz?z1uz … dUx+J z/8g8w "ux׊uշv}7JwA7v7xBiq#7uXȘ xxW|vA7 0 yw`܌|x'Es9`@ xkxrtXzo[wӫnew̓yLKy Q9U9s#[Y )"kKg$ɖoV]mwyPɗAf+vӐ99y9y9yɹ9yٹ9y鹞ŹmqN:z :z!:%z)-1:5z-Z8A:Ez5vHzY]a:ezi!ڣm:uz9m#xz:zqzej#\:کzZuH:˺ZaښZj::z! 3Yd/CZ` A%!; a5;[My:FۢGa { NwAim?@r/E[78~@ X; ;Gz`{q{[[1&@ W{+ۼ۶};ڐ&@r|潗[\!  *<ZC[ġE[W7ƅw;xxu|`tm[<ɕƋ8zɥ\Q#)+e7^ }| _>zՋ 龠޲>gdz^~Ƿ=>o!{ȕu~"$|EW{ jý[{ۿ=U^QA^_cLؽb};ÿ[?g]?[ >I[=_ĉޱ``M?Ñ :k{E{O@jI>Y[?;B̩ <0… :|1bC+Z&P:z1ȑ$Ɖ2J3(QLbE͛<{ 4СD )8ʕqJZU,\r" Ccˊ6ڵl.cGvʭ޽X)0_u 8qSW|sf͛9Z9s 6}qʪKgūj0v1 ; /|Gݿ_d,K2iĩS-s䤍{GHuW.N*K2.&+܈GcI\e 1]h]xWVAa@ͧaQa sE`2Zm'Zw(&xfdz}ȟhC=Ibc,67t3^eP/0% $luEjap"ԏpoYZSMIY KtSĘg>mQlrVJdGMV-bJjOu&8S1iJk֊k[ħV luNYg'$qTl>׭NѮ)**n٩ *RKnk讋AFerKoQ[[B( pj+Ƃ.lԖ\&;Z_1gL pB-(+jZ+s irN.ѝѦ|3 mL` 4AOVrPkGQ4 +IMI -M  ,H! 7+~h+FfT];\h6Y4nȰbH|r֙ҿѹlq#81$R:ECG=62CX:1Q$(4 ZT)vZb1e&R⪏ 녵Y<x 9| Pdb.iM=QO'?9,13hswdKrl9KuM eEJ&!,9O]"6WTe۟*JE$6 bpyAP!M ~sGY F[) 3i d .eg:fIQ"+9As(գ,xPh}G,r$v[LIO7+^u8@C=Ri,H\Ep.x %rХ2Nm^U0ExlFY8Eֆ-hePmkZ"aR+@KK*0m@ jn/*w.sC4?7*fʹOt9?w|-y绷 ƻLwR7Bin~[]a n Kx/ kx? x$.Ox,n_ c=0;x< yD.$+yLn (KyT ^V 0yd.ό4yHr{| M buoՎ%1O%H]J1RI{}%|} pA`6A(CHEhGIg~e@GQY[ȅ]_a(cHehgikhHvpv ps"H?qMPR%L`>1_&|/((0p( p(|.HhȊ芯(HhpQaXt~V(HhLjɨȌ(Hikmq0vwPs Iw g#mB;B2(Ah؊ap ɐ   g病fm !)#I%i')+ɒ-/n8sw~t$;J`LJ:0H:FpUɔ}3` 8P#aNP{' s  H PB`nɗr'H tY(Зur{gqǘə陟 )Iiɚ隯 )Iohlp~f g`1)Ibr`5Yv}08 Hz? (xX/<ѯKq,#1:MF'M${б-M`_*I!+=+, CKEkGIK˴MO Q+SKUkWY|pt_ hjsl@ql0k˶mo q+sKukwy{˷}o[{ *rt{ڦ剧: =Ѱ[:ۨIK.K1<ە%+<۳/+1@0/%)k=@ۻZ +KkNjɫQ;^{{芮|@jgnr +Kk狾髾˾ @ PK Ӊ :%i: D Iթɰ,[Jp 8Ks'K!0,5 +-31<^<66L6KMO Q,SLUlWY[]_ a,Jt[}s q,sLulwy{} ȁ,uL `ȗ 꿋 иAC%Jy\9陕]dٝGHM@(% \B/p/HK\5@CLŜHDĶkc ,Ll׌٬\ iKr@|u  ,Ll ϚȞ P L @(ɤ<"MmMy2 !-#M%m')+-/ 1-3їЦ9=ks Ew0KMO Q-SMUmWY[] եPЧ <) 7 Co*Npmwy{}Ҝ ǔ ؅l qP[u tV֗} iYЅإmڧکګڭץ}Ȗp } rPۅuMmǍɭ -M-uٝv{ - p޸Ⱥ-w@ppm .Nn , ٞ-Nn  !.Т` ګ@z-/1.3N5n79;=?-NEnGG @ -С } ڻ9P{ ]_a.cNengikmIq.sNunwy{}.Nn臎艮.Nn闎陮.Nn꧎ꩮ.Nn뷎빮.Nnǎɮ.Nn׎ٮ.Nn.Nn/O^%[ ~ /EO?'~ o,/&_1o7?=w>._?OE+oBoK=M/S$/4OY6fA[aT]_/g!C?aio(!!2,>yG11111111111111111111111111111111111111111111111111111111111111111111111111111111112211111111111122112222222222222222222222222222222222222222334455667799<1#.9Q<#ʼnQyDRt%sM|JQYaUFJ6Rɢ LfI4*6QAL!!),'rlI111111111111111111111111111111111111111111111111111111111111111111111111111111111122111111111111221122222222222222222222222222222222222202/2.2-3-3-4,u4,k5-a6-X7.O90E;2<=38>45?46@56@68A89B:;D<=E>?GABIDELHINLMQQQUUVX[[\aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~SH*\ȰaAzJHŃ#^ȱcŌ=IdH(SN4yR˗Yœ9%D8Sڼgǝ<} 4У E4fѦPJ5ԪUb j׭P3 4 ײYŢ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3ǕrL3A)[:{N!\RR9ӭ-eM} 8u-w,9<pз6x8)quYwR}W⼰cRc|ya7UvelcY@!!2,;111111111111111111111111111111111111111111111111111111111111112211111111111111111122111111111111221122222222/0,/)-&,$+!)}(t'j&a%Y$Q#J"C!< 6 / * %              !"#%'(+- "0#%2')5-/;24?79C<=G@AKDFNIJRNOVYUX[\`ddgooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~Ŗȕʔ͓ϓВҒӒԓԓՔՕ՗ԘԚӝҠѣЬѷeH*\ȰÇŋ3j8Ə Cȓ(SQ˗0!zl͚&i3I:{ *`IH&YҧDg6PSZ 3kS`zOfӮD-ȣ_H3ܻpǷ߿kUÈ.1aKV |+[>A}ACwCEqEGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~hR?- e*D8‡6<#6QNJnHdȃ ?"Ty@ax1d͓4MfcQ Λ;j1dO^,iҌDF<#ԊVUsT6*Ч¨ IFUg]6@ e[¾ %+Hyֳ`Uȶ'yZ(Ո+[׮Wc81ȒJqcGԗUXk%q`pwps=yVuuDXӝ1Q!!2,#1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111112211222222222222222222222222222y22k22\22P22G22A2.7.(-("%%!#"$'()-/0633=33?33A33B33C33C33C33B33B33A33@44>64=95;=79A97H<4N>5V@6^E7eH8lK9sO:vQ;yR<{T>~V@YB[D]F_IaKbMcOdQeSfVhYi\k`~md|oh{rmyurxxxyyyzzz{{{|||w}~~~’ȍ̉φ҃Ձ~}}}~ށރ߆ߒ۟תгͺɿeH*\ȰÇ IHŋ bѢ{ CIH(SjT鰜Ǝ07~4II8[\`̟ Zsф=L*S3J@Ve`}4ԩYbʔkW_U:V|fzM;tѶl7\E{W/ߘk(/ښ(]= 30\WHҦm^IبZ5CFxփ7y6ƵlFf}5HkC?&)J0Ф!ه3,םx5(d&{(Y H HQ}=cB^Ezhg2 R Ah3bPXAd4H)Ä/1u7.2T9cC "w]AcPM$tV^PH7 ]^t /~exfSzf<9snTbJdJrgRIs2v?(H$2Hjh&=bCBנ{}xew*ZY١X^^rNGZ0݊7H֮dV1Yp27kZd2$%tҵjUoB[$"17d|V kKO!`^ o/ m' W+@1-S2ak2D+3c۞SsD7 =tEg-GpR?F`/WL!!2,&! *5I!Z!#j#&}&)),,..00111111111111111111111111111111111111111122222222222222222222222222222222333344556688::<<>>A}ACwCEqEGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~hR?- e*D8‡6<#6QNJnHdȃ ?"Ty@ax1d͓4MfcQ Λ;j1dO^,iҌDF<#ԊVUsT6*Ч¨ IFUg]6@ e[¾ %+Hyֳ`Uȶ'yZ(Ո+[׮Wc81ȒJqcGԗUXk%q`pwps=yVuuDXӝ1Q!!2,###=(+A)6=)H:(b3)x/+,,-//22222222222222222222222222222222222222221111111111111111111111111111111111111122112222222222222222222222222222222222222233334455667799<1&:1%71%41%11%/2%-3$*2',4'+5(,6),7*,9+-:-.;.0=01>83?45B68D8:F;=I>?KABNABNACOBCOBDPBDQCDQCEQCERDERDFREFSFGSFHTGIUIJVJLWLNXOPZQS\ST^UV_WX`YZb\]d^_fhddphbxla~pas`vaya|cbcehkosy H?(\ȰÇ#JHŋ3jȱGC4ɓ(S\Rȗ"[ʜI͛a$ϟ@NITУH*=YҧPJtԫXҬSׯ`7?aӪ]plٳ/ʝխBh݋q |/+^i.Ő#sDHa3k FZ7狠y^-Ьc/F}e !w Ó-iVykٷW5AF~O]߯2s_nр K4蠃 7 !."$-&).(+7)+@--D00L55O99Z77\::_>>_CC[EE\HH\KK_MOeQQlVVrYYy]]__ddiimmppyyƄԈҍőɘ͝ТԥΫϱѶμƈ!H*4(O‡#JHŋ3jȱdž=Iɓ(Sdr˗0cʜdC8sɳ͐= J7*]ʴG@JJ*ԤUjݺ*V`Ê%سh>,kV۷gFKnVvuu߿E[)Ès QaÉ#KNx3k>)1͠CgXӨS^ͺװc˞M۸Ƌpo Nȓ+_\ݽ1guxkνOӫ_Ͼu|qu|gG(h& 6F(a嗝uQDvχ ($h(,0(4~CD?h#6iH&L6PF)TViXfCj>c!95lp)tix|矀'6B)eckZS4F*餔Vj饘f馜v駠*ꨤi5\Cзvhj4*j뭸뮼+k&ӬJNs!ZL4eS4ŨЬ6)B5*Jk.0B@5SkUY>\;]\c5vg}PqK=7Ug?+1Avp$R*z/sͣ3%%w`>p޹QS8c 4vP#1k{޳Ӫ7T| 4 |BÆ5 3@Fn>O} ]!۵O8 ec 7vBz+ K;z4 sȂ|>8C">L%V'dOPbH*ZVmTx ;ci'u8D6э24""(2j d REن׽(CQ{H&Idr%H:M10AL4畗[|X= r qZHu# 0Ib¼2q=#2jZ7 ѥt#H:יu<3Pe:W a` @Ny&3\l5s"F5)vă҇F7Zz iHo ҏBDIWҖg:*6 M"L(>tRH=*LԦ:PT7 LSͪVԤ.U?ꔥMؼAg~% C(RA׺⨫^׾ `Kx^Ӱfik3<'X[t㨈k?FK&MjWֺlO[&JGAeiSeK8ә}m]8{цt Zͮvz xKZ״UF[ìuK,;\vCroC΍nyAN; l>״-;XwpY_v5 pC(p7fL8αw@+\] WnY lL$(A?~lchd11o`L2coe8FUYn+> Ht E;ѐ'MJ[ҘδhG4n*$CV5…VJ9G?~(c*QMbNf;(6 R@j/vqUGۍm(@H7, dMzη~>w'#mMj;ByW u{GN(OW)!b(c έsA@o(~q xg f0c8x2u01Ava0_ ^-w[|/=zH opC6φγ }@2O=h>/҈s6aؒw.})Lc2ÍKLw:/ϯu80vp~]]|mAW|G36x'zgzz4GpHpP 0{peW6$@$5Rx7b!:2/;j]^tp `u }[G}`vc}ڗvlvo'~gww~w xGxgx7xygy8hxXx hWnW\&2dHu!:SKTf|S q4VùuZ]Wvg}7}p7wtǃw?C~EGHK؄yR8zTXG`6c\f0؊1jKHW|"Huk @u}Z|}Wݷvȃ>WGxKxwWȉx8X帀0Pdx(:E_FeRe `;@w؂ׇňv6}9w͘~|ЈIxHyNzx'XgNd"kk (u @ϕuG}2HؐXw8w(h8^9[XjF3نJGu+|+'_ }F7;؃L i8S)yPH\_8cgae9gt18Iy93 yx;~Oyȑx޸Hh) jedqfVY.|Xu iؚЈY)ٛ﹀ +Y]!i hpGiLjy )YVY ݸW IViɜw9韡9DY θ~xIHwܸS؞U! $zE(qtg-Xr9Ĩ}vy9;ڗ{'8jhIʡLZ|ڧ~fUZsؖ*,(cJ8ʠǣBZhgfȕiʪfVz*n\ڨːWg2ZYE؝OɩH(K驡"W8cPЪڪJjVq!8uk૿X IHi| M}pʬIњ zXh׊ۚ09jAi9:jhZ$Cʑ(Z2;٪ ˰)Ag*3Ji걫9! W%{:*{,۲7'\˵3Z6˭6b<;WɏUBvĘw}ɠA8PQ٩SYGzn`۸׵] _+ceh۳:moۢrkB6JL kFˑ;mึ++;_۹E+9~jڠlOG{1{>ëq9ybڱ~׈۽KK`y曹˾ 񻼪YЫ%xSK+\˻^p,)hٴ!,~@%l)³·{/<1L7š۹|j[F,‚ٿJ yڻyP.Z;yQ/5:<>JyƊȮKMsRlǽ[䛶X,|89@ ł<:*Cwj֨ċ;ɔ<]˼S}=z|L%'7+}~=Й 1 6TmfALCmL}^&)kJ-mY[M8`]d`gil֘,p!-$]I*U{0́؁п\۸ذ۲؍i֑ nי٤ {פ]گ|[ yP_ڽMۍؐۺ=V<ϖۘ^՞-T ȝܸ״p}6 =wP׭]λlNmw=<0N &m;] o rO]Q;@N"~Нڂ'^݆`a,~g0Ծ9qgܻA]F~5 nI0yMPyS^Un ZYMΌkf~{N loq.t>pw^On*⃾^ö^NNߓ~ps>>N.^ꭝ}.X. mJ9㺾-EI>PƎPϞ>\`Y|[\Í>nn^Ǟ^Ҿfnמ3.[Ia,ȃ Pp87]~F$&79 :\">n>nIN/2r?tOQoN d- a^M>gjou_\TM@BD_/n/]/e^?o=c^hOpr-b^X/Oo_oڟ| / !K@Y DP  (hA,˜!<"2HLTEJ-]\IOL5mڤWL3gкu8uرsO)M>UTU^JUixϦڴ%b]e36:) 5:<eqqsG謁ˉ=7HЗTzMowʼno,b}ڷwv=Li`ղ+/mקI'?EЅ/ Q 7C!B+gz0J_ Q( 1:+Y"x@Fk`c"Rj\#D8Pc%eו0J+o\12r8L#$8V_&(u$I?ފ)QEU掕4L:|V\0cֱόf5@0pTnҕ'Lfd{ٟ R;y@w'?y.#Nw%n9jxLzKy1(GGr\+Q]`_zsP?dzЅ珞Ko:ʟu4rÇ-s=8ua#?x^fG|Ⓨ|lGuw];{5i=㢆w×Ux7<$?Ts;7xc|< _}N4χ>aܓ=kχG}Gԯ=a›ǻ={7<=( 4[c@x?(><˿>>$<4ADl@{@ M㽭;7|H !4#<@\A-r?̱ÿd A @"43D4$5N M`JԄITIɚGIz؀ʮJI\_d6s\ItLʟㄶt˶lʦ|ʹJSJxxIɯK KJwʡ<ˢ|6hKd̵ij̸tʹ˨KfKhI|\LñE<7tȔMʴMLg{LzЀ$4N4(qT8؄NƔȌKۼ͇MfM<0q&4 5fcDVEfFvd!8 J_?&c@')B?(~VvWnIdKdMe<\d^e` b6haQ6_ƨ{^XhfYcZ[d]\o>pNfe2dBG ivwjgJf:[|nop>q&gf~&MQq臠 hpfP爞z{f}n&%hV2hVh臦~efieg~6fVVXhghfiFviyi陦hi.fzjVfp8g(Lg0htjp椞祶nh`XFSk(NPdhek~j멾kbjkn jVj~kǎkf~Цu0*T FmkVlVn׆m.6nplpA kf.n>ffonn~n.fhpF  f oz8oNof}nooont& VNdgq_k q˦ ζ ?qHh&qz@{#G$W%g&w'G?f+,˞qq F6w7'9:;s<9>?nk1's6?gq6Ht8JKt:s@t@ωmAD  HVw$ǁXYuYρ[\]^_Map66 VZjkmnmpqwa'vN7@Ne'#3nV l{o}~vs?@/uvww7i!2yc-foWuxyωHxWfw' 7GWgws}8tO o('7GWgw/{/tywz0 nfe0ePWgwLJȗɧʷg_fc/gxgr{ghؗ٧ڷ}w@zn4Xh'~~/d?X gh,h „  7p':}رs.xF,i$ʔ*Wl%L!yQ:t 'ܷo-j(ҤJ2m)TA3ƎC+ذ-CztgSN;{ThԸrҭkۈT)ZcYb.l̲gե؏϶'Sl2̚7ssՊ1bqԪWI&sZ'ȟwܡEf\ZV3?Zٴk~l:ڷs;LJ>q䮛o/9h笯"96"4-"/% ,!*)))(*,/259!>$B&C(D*F#-G&/I(1J+4M2:P8?R>DUCHWHLYLP[TY]Za_ai`itap~bwb~ba`_^^]]]]]]]]]]]^_acdeeeeeeeeffgikpw~}cSE4! e8pAs*\ȰÇKDFċ3jȱǏ Cdhp(!4)CشɜI͛8sɳϟ@ Jѣ6aK͵ti*5jUjʵׯ`ÊKٳhӪ]˶׫YcjdI֮F mﳿ LÈ+^̸ǐ#KLy0߽,rlԤEX_S^ͺװc˞M۸sͻ7lFF-6vifm2ԼvʕسkνOӫ_]Pf-6bk\ʀb& 6F(Vhf  -3aPAY#Mh)"4h8<@)Di:r 3XsK&e/$0`)dihlp)lB2'8 e62d~,K-@bI,P%袌6裐F*餔Vj饘fh,@I-,ST}jPb*무` %yB}ye-@"Kk& ,R˓Ҙ8Ғ #fv+#jLh`nRdn1Yᅱ2RJj5K+ :8,Į J.@Sg$0)R)lɏ2BSs( (_Jr5笳ʬ`Ps.33|&*=tLGZUgӺ2Ӭu8c=r3Bw h+ fm7裤ۏ^Iו>(u2X @/d-Ӈ@lD؅,R A,3ј T2h@B3AuØB B wH9`׸1zCMH,\e0,DHEK\ @5DY"EX5]4YP cC@$VE #.+'5q81d Td"x FQ%<*zq2$!] LH"@>AVV򕰌,gIZڲ̥oyU⡕$DJ@Hf LA X4DjZLv“' #E,br„1^b LΑ''2Azj&>O$Uj͍ '&XXa K@HEUt[Ԅ>MvT HG*RHDOHcKG;w4 `Bv&"qãLxRa!쉪TȇDIa3M4hGP;nKJg,* \=/|׾8!qCc U6QSxQXYwvCuk:צ(1e2Mme.L~!$L!c8Ql*{YBJʒ,z }N2.U ]X6d5dz6̶.1H&HIzi%7x>[߆w01їD&#I O{I. 4:=o'7G/ԛ܈ܻP%?1<藯/o_HګP.v:'H Z̠7A pDIG0 gH8+v0@ H"FL&:QKd 'ZX̢s.zq`111hL{أ:Z#@ ·F4 *ђBJP/@?E8UhJUZ 0.% /ψzQ)ȩRS-Z>@#`D4% n~G%ARJֲ5!Z"!V0KY8&"k* Bv+^kמNb*UUG?UcшN\5ˏ}c lqҖ]"*IZݬkc`5ii[5|tUͺõ#nv]2UPKN A*1tK lyA BP'5 [ĠM* |X 0a`pe~! B4 FL@! ,] P!(ga[@r| HFhp$;y,2 L'[Tf\xy\d@!!f,L*<  1":#=:3% c'#M($OH(Oj-F1<34433221122222221212121212121212121212121212121212111111111111111111111111111111111111111111111111111112222222222222222222222222222222222222222;6D:L>TB\GdLmSw[rgjngrhrisjtlunwqyt{x}|Á~}|{zywwvutsrrqqqqqqqqrrstuvwy{}܁ۊړٛ٤ثضѾɴҮ٩ޥ䣱衯롯]*\ȰÇ#JHŋ3ja@Iɓ(S\ɲ˗0cʜI͛0@@@ JѣH*]ʴӧPJJʵׯ`ÊKeӪ]˶۵"ʝKݴqJm߿_,/È8Ɛ#e,ʘ3ΠCK|A`͌XsݮjwL?ezxϢ+GJڨ-` <(O;;j}7hNt4LNOG~ y%{BkYc|Cx9XX~wam! BE7{=hFwզ[x("5_h$(dcme|A@P Oc~QXVQM!cbX&^zmi{ɷuŁ9Jww̞}(:"&Q PNPOaև5ڥcixv(jjO2  6iZ5skj*kڛ6F+-ŀ Lܖl+.ժٞ+R+ֻ:6[X.NN 7R , Idqw-m1J*W40,4l87B>WmLm@w.>;^+e챁ow >@縋Nꮸw/0QB y#/oس%( GL> 'H Z pa^ GA X WP~h 8̡]95H"oHDnjO}@ H*n/IׁgA8aaC+;b>1FeD(B5*s#8\7E;RR %iȎL""`.wyE52t klL&/}9J`j4CkKeZ&b '+K l2H3<0P9;~r@A΁=BII3  隇S63Q4n !!),>21222221212221212121212121212221212121212121222121212121212121221111111111111111112211111111111122112222222222>/K+a&v!vfWJ;.    "%*-2z6=pBI`IQiU[nacnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~HS(\ȰÇ#JHŋ3jȱǏiɓ(S\ɲK0GI͛8_ܙ0ϟ@ UɳH*]*hQPJ)OXjju֯`Sٳh?۷גKYSuj_<1 7a*51˘SJ%S岙C3cУS4հc6ճO׾;t׽;mYre_7H:Gk[{OK=^{쏾4>?GϿ(h& 6F(F2fk`aN )衉,",+ƨ؏8gc3>ݬh$>c n0)!OF:ϤQ e<[#N2k G͖֓kyFj6ٜQʈ !nLg.駝yb,۰ !Bb>0Й3jꩨꪬ*무j뭸뮼+k&6F+Vkfv+k覫+k,l' 7G,Wlgw _LF&Q*_r D2.lQ:7s t ] -QFCt-4CN?PRWmXg\w`}F\}]qm2Rt3=.$x}mtNxC^xϊ#xyxғN@ ӎKx@!!2,<B11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111112222222222222222222222222222222222223302+/&- d*O(>&1%'$##"""##$%'),!#0(*534>;\)ɚ5i⼉3Κ<{)3ГDc=:2i˥L+:M 5é(Ze֭2UHVZDUmELݺ ֢\pޅ];  Q# VQtq OyMo IN\aCmC؍#2 mɐ"9t -.E3ֈ'[hы2χ48M' Nː/"6Vv[%1_Z 'eWfc$< mঙZTY3d? ؃Q$ht2d.4׀i2LZ&jФ2VD&hrH2欠Ьǩꙫ`Pk:螸*,:B{j@!!,V221212222112/519RY5 ++ĦĢÞǞˠΠҠԞ֟ܜ䚝엝맧ᨨપګѫ̫ʬɭ˯ʲɴĵøźȼɾǿľͻ߲ŐԌۋ݋݋݊܉ًב̠xk_R:+̸c)F~L兓^̹r戟;MwfҨS tװYjs'Nl̊T^M~NJA{[}#͙ Nt=x|߀.n'^7isc:_spK HL:'H B`3[1L` `Gs;K.y䏅8Ç<LhȠ<8ꐇ#KoiHb X`oP";xC\"S(/f1Kfn(Q6\s66jzj 21QkGQ|hH+"}L!#8G1[d-GHd $P,(W)hz|dLU-!Z(%(%40GYc4IjZl%w^JP4Q?qde:EeJ@D&<9Oy3̧>ypdMT.F/YPV|((#ˉR]&?7ю9<@yPXP2\@7 SP5)MczS@fqBȑc %&)MiP4OM\ԪRFTծs$ev65^MZiܟ<̊TxOLNtE4@la 1_ ,ͬf7z hG Z}F\ec"=wL6lgKV j=n}mKfnv+rh(+>ͮvz xK7r`r na ͯ~ͬzan:v[tE4'L [ΰ7ck"1ֹ9^0gLsċkdHI*;H7HN|H+`V&'$ǚ-t1mp6pL:xn3rQ P@L6ЈFmF;Dwsq8ĽAqot׆7lx<GgH3f0/_̇Aۜ8y1vb@>t!AH~8PN zuwxu`5A~}"ruw!ptBx^ Ax1Nxw 'O ,̗a<49σ}G?z҃t>q@GWZ:כM5=ަ9.Xs=v;~p+|-NOE?0+O_>yNЋ>ȂO,|cA{g74dov |Ǘɧ|gw }7xw}q7r}+~7y7 w~Ð~~z'IG qpàH'"|oWwQhpSHq\^ !rr%HhsjG  €y{(w8X{ x|nu|y׈|w Xݰ٧}r &xf7/؆tA(fAbo V|HwȷwTX7Ȉx`،׉Xsfx+Ȇ8z ِ 鍲~PbR 'Hqb(~'H;7Dpt?9 ؇xvɢlv|8|pWXȁ]x8+.i~0Y7b(?eiHw`OxOIq#IS!(XY/ɂ-^c)ey&c`"Iogw|| WQixɘUi8-)H29z`ٓIBn׎I9GP9TY鏫ɂ2I5 Y;If|›ŗɑ LNIyy)'X~I]Ytؘݙ',ไEr陏)Ȟ&i̹8y8'iiɟd |xKyvyqzȉ ١~PFzH 8 ,Bٖ`wn7tY}נ2:Z(ʸȏ:ʒ2ףG\/9IoZ),Q\G扥頡ɥX6 a9y*{,y |G,K!*ڮڬ j[ Eг>۳A1ȱDpHJ"jz|+˲-0k۰Y|ٗ:j f{g{?>KGGEr+MjjYV{ꪞZ˵];:d hj˶lFks[G[${Pk׷. [+$aۜ[k긎+'jګxUkM0ki+۱[˫w׷Wj[{w ۾{ {72K;y؛ts% &n'62zg'܀qɘ [bdk қkK{ &|()\,',KO q쾪+b; K*Iš1Z5 \;\+;B|WF̦=ph=np LN{. FULxvY}[= aGȋ\Ɛq<ɓ F,>g\mᘌIj⭬- 2N4+/ n;>n@~=&FϭIMO+Q{<[]=%ǀ~瀎GfL t-mNU-rNt^^}xNz >*⇎&mߝ(>YψyDޠ^楞 ~Ȟɮ q>Pѐھٮd>NʞY壽N뵎~﹮>.}+v o^>s`n f^O+ 0 f:?! ?%o.M(.3-|;\?`b/'+) LQNUt\Jc{_rܭkn_p{t_v:~o+)NO q/Zo?_+_W鈏NOo= ȟ>_mV]_?__?֡fO@ Gv =o<|]QF=~RH%MDReʋ*ỆБWMN=}RTPjьE4)M5XѶ[z:(EG\aCngge꘭ݜhgX"t֭nZ}s̮M6o}+L=f->/YGgF3LA!Ш +3 I6Dͼ<Q=3q.Už~n$L3Q2!,H 0<& r*],ڒKLI'4ׄM8jN5TQE=/ 3F*2/5& HO5PSITSu?[E/W![m喭Y%\q%[QF_e@`Vbmz_va]gۿOw7w3YEWt楧_>H 'hз}ZF?%0kà?O{;[EȮ2X1gSm.ok_ߗ< ZyAƎQAF8JPw*UЅ;YdHxցPbD#('j daB(B=~gC w`E.-8Hf<r;7 bc&{tT CHHRȈI\V"W75́PV&IE]8COp/4K9䜲rP5 τ&(Kqy%.]"9sHLfXHф7KZj ԦM}FN%Tp,Qi;&Ҝ&X&kAHM 8 R :S>t DL f5iI~T"_ T.\ @Y:UW=#N/WVԧ$J0w T*=*UZU*VU5Rԝ_< Gt<+ZCV6\%;#զlVU*t ДBhE+e´A_ZֶLXfmnuFvHeBJt,hGҞvcŚkZ[6mco[ַ/#ᤦ7]ݸYy Qr\׾ l;]i0vk0nwlEof&׽o.qkA`/'.?ʰb.n'kDwieo,)8?+TGFr|842QW1\i$m:1z< YCf6'NN+i Sw.L-Gt9}\Ц@4aM4яfs $=iIҖFAQI's*y,5o,<@xd.s*d=kC"ѷ6kHGғ45ivQ5I}gSq˧@Ru*j[׼n)agZ$>6e[&Y/Ճ*lk{6ŷhq^A5}3<^}eQxZLƷ|~U>nr+ wÏ7ysnSޫ^/{-hXv#/qo+4 'i>^yIiDaȏNg G}-j]['p׿>x]$ KanOw?-/L}};.xWz֯heÝ{yzx\/O!:ex}{}o>K0GO(W|3~ _{-_ٟ;>?SL?k[> [=kڳ=k4NA>KS4<@Lc$|@2@ ջ<:S:n@MA;"TT#?t1()A1"AA\+/R A "D«#>X&d'9B+BѸr->.<4 /@2 NCDDN4DA$lC{C8tB:(;\,C@1BLDD\DF4AG|D%T@IT?9D:DL <D˶ZOER` ,C}^X@%؂5؃E؃qeq-Ws-&T͝d׊mUX}WzXZU\W~׀؄5ٓM؅mؕu0"]Wgh؍KŃِWڠW%ڢ eYuٗuuU؛;ګZYUY۰%Y5۳=[MZrє*G٩ZyڼZj[گۢEMa֥Èvuw׻ZZξۿ\5 V%նe]v1ǵ[ɭ<ؕ]\]?^%^H@U]^=ݟvXOȍ\m]}]^ՃW5-%ee^}^镌ڵ]`=0F6`vn`u _"R`p_6Fa`fva` n_H Ը`"_aN%>~')+,b-aa`b0bE$Vb&f(c(9:;c+=.0^ 62N_~eFvcހIJKLIOPe?@"AK8 DEfGGdI[Me;dQeQ dT."B6R7]XYffYgh]:Ilm`Fa&IQe= efFYրufvvwgigJƀz{{}~kfo?pU XtvG爖wހ|hgJa`9TN車@牆阖陦^|iޏ>̕CfvjxhjhF/.j^M"%n~6kifN6jFj8wV^~k&ꋫk Ȗɦʶli.lkG!jXV51׆ؖmڶm.Hl]ImqpVvn8m3 &6o~ Pfn>S M{'7GWoa6  r '7q o/ fm NX !gqC-n>na("*+,)/(ob% ?iֆ5g6w789:#GIs2/S3w'ߑ;'B7CGDj$s1]??պ k N<tELMsK0xtHt>t4tOWUgVwWXYuV$>'?SGT`a'b/[\]^?@G[7ijvUh\buFmr7sGtWugvwwGmnowQ7qwh~_}|?oH&w7W'xzxx?y}/pGxpw'z?/w/s_zzz'7GWR{؀!!&,a  &*0l!+l1h121212121212121212121222222222222AAhhsszzĻij H XȰÇ#:4Aŋ3jȱǏ CIɓ(S\ɲe—0aJIf˛8sɳϟ@YJTBG*]ʴӧP90OQjʵםS{V׳hӪ]4,ϱeʝKݍn5{ݿ ^W'ܟX+^̸19uLŐqJϠfgШS+޸c˞r׈ͻEBq5XC_YˑƓKx&V@!SO+ŗOy nG(SAGo?Xh]f!z E!_>hG$YI'(z.[!3X"$dbģH>8HB(b-NeERRxV>Ԑuȅ%Ef)njzAiQsZgF#ʑC )t'Zh6^Z駴]сij¤*G:2詪*Fͭ}\^]Qՙj"FXwĵQvk^Q&ԫzkZkPM`B ,xTC{Ci,l' 7G,Wlgw ,$l(,0,4l8<@-DmH'L7PG-TWmXg\w`-dmhlp-tmx|߀.n'7G.Wngw砇.褗n騧ꬷ.nۭ/o'7G/?_pgw3ooo觯~/?o? EHL:'H Z, Rlf7=r,hG+=ђ3-jW<ղs-lgFenw+ݢֱ-pw=i2}.t7+^֝,vrwa+=/z+|[7[ߵi/*kolW38 ~0~#,R0 >0C`ےX>R{1;;G6^s88,d1>2il%N)SY|J2s:2g1f&wҭؚ[y3YF]}[w.p; up2+| ox&qGgw͆?gxa-C.򹦭VռO}Vrun ۿqrU@!!,&[11111111111111111111111111111111111111111111111111111111111111221111111111111111112211111111111122112222222222222222222222222222222222222222334455667799<y@?cBAQEAIFCDHDEIGHKKKNPPRWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~?࿁*\ȰÇ#J A3jqECIǒ(Sxr˗)?IfƓ Sở@IfH"-PJ}ڴȩXZݺQŁ9srKq&ȰbɪeyP&Zk26ܻ&֝/aW0^p E/ƃBL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μУKNRM2E{t)麁޻s)?G^|s+/8 G/~Ggd4#P@!!2,Q>11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122112222222222222222222222222222222222222211111111111w12l23c34Y45O57H78A89>9:::;;;<<<===>>>@@@AAADDDFFFIIILLLOOOSSSWWW\\\aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~A*\ȰC>HE%^bFCLȓ!KDɲʕ-c2| SM4k޴SΖ=}<tϢFoL:t)ӝ!F}S ƩTFj+ׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ ,SaV<`Nj C>77//**$$  +2&639>2I+d!Ȣ"z-Mk28h11f..]--T--M//H11G55F88I;;N??OAAUEE[GGcHHjGGsHHvJJwMMuRRqUUtYYq\\saavddyhh~nnrrttyyʙԡղ`  D鵤鲯ֳ߳ϯͬȩʥ͡՞՛֙ԖΒԎ؊ֆ݁|zxuvqtookljggcc__YYUUTTTTXX[[^`_a_dXoBz oYC7% 7Ndx qsvv$v0t;oH*\ȰC"Jŋ3jȱǏ C.H2ȓ(S\ɲˑ%cR|I͛8sZ,YΟ@ sbBD*]ʴQOJJ*BZʵkШPzKIњ]˶-LKwڴpnC|-5R+^̸ǐ#K.%q2ʖ3k̹ϠC.1WS^ͺװcN-q6ڶsͻ^"ӣ'ļУKNzu֣cνO^䯈Xj(K OϿ'Qh& W!B{bI!$!`5!XQb+=d{h#\0 t`8r!P EQ(((ANԨ$\6D5dʔUZy%}I%>4Ql湐p6Ta'eHQ2$DH'Q:gd zQyhh~Zb@fa2('jjJYzꨧUGʦ*h3 +.*:qˬz+HV%򊥴:q/N<DmQ?+oނΫ/ΘK6̼Ol4{^,R3N4Ru6ߍ`}#,8^x"ېG.9p'@R5׀ 8}L:#N<>밿]yA+;;r)HC?@N<,,u?Oi+|gBOɳ{ï?bc+`N}j@90x d >  c K} GH(L Wn|"QtƒLX @ xH4C "D X̢.z`  nNSJ BQFH:x̣AmG=ZcE( 2F:b|3_TʢP肈ɠxHMX VV򕰌,gIZ̥,N D,dQL(>1XHmhV2f4Ͳ yMNh"`aӟtC%QaT.OM.U;իbU\*XJVulm+\JWuz_+XVmc3+Yzc9{φ}4&0[T?pɅ*s'ܬjUFX1VfX]vWZx+xWְEz5 Ro| MlB~[-n-P7VA nQLܤ^Ą)|U GWp?캕&wUW01bջ^ZmtYZmM "OH-A 񧗸D:=Y[ wsu 2?g.\Of6.~qa<k%0! >CgxGmm7F>,T;W9ebԢp3H]2X5f7ڼlg_BWҳKVnm%= ~̎4)=\G׸L/5k39m 8y:Fgn7 ^z!%PNDᑠ8-~i,k|Rus=E[Ou,'/ _hOYI;-L$GB*CjWVӡN{.ȱs)/aYE7ǃ޹DO C-iILǶKJ=TOF9\ݑ:#:#nWol9|s67İ+p \\UW%uuhw{e/Hhx蘎YvwA_5wCPStmŘ\݆{gZ]JبW|(gxHꘑɎ(7;8{M׀m،ߦ{$7 rH5YIYȑ^HUS((x*,y.iaiϨ~9t~ؐ<ٓe@YH0npq行!)NiHz~ĘeWH Z\~Gne А—r:heh9jɖrIHwlDPɗ ŃWe@euɘby zHe@9$ș x9U7 mٚɒ0 9ؕyi~ȐeByٜvɈ(OiWꚯ) ڝߩ[2iuѨ噛I&jɇEޘYyɟL@etzP6j ꝲe8~jfIODФZ!Z$:&V* wypy hM37z;ڠ> {df׸ٸդDQIWzY[. 03hyx{'DGxZzZX|ڧ RX Y+ \ zqթMJʣP Ц`rǩ牞ϪC`XjPzڪ'ZxץP4蚮ګi)ú ֥ * aֈ :CPTpɭj^exڱﺠJ\UjayK2 BPB X{ ; i(cYbڱ ::z)+ ,۲Ҁ03K6[:{<>I \pr+Dˢљ_*K˴c괒*{zf \˯^۬2;ck j?s۹s[ 5p~ ʣS+U j+x{۸]k]WW+[f;"j+GK {k{V;۲ ;{ĹSڶ0[kk2I{֛jڝ *Z^5WK˾;kɻҫ迨̽`[ԅ ըf<,Kh﫹S \ L*H;&gSUB´+rJøۯۻ9;\9۾ڳ$^A}k-,* 㞍3N9[8) =EG5OR>V"zzZ~^^ޔ=b.`g H.{oP>瘾vٚG8{6p6灮`^b. 戞֝jݏ.KN|☭ʙ^9 Nꤎn*Kұ~.䷎돽&^U~zЎ P~՞)˴\=D.{@ )N?] oqNv:<(_^&돞 M~ PRo<MZ3OO~9ofhieGHpx |_SQ_{W[_]_6/a?el'n/)|?,P=`;3b_yr uC]58l"EOs(˯?N@ B)%K4q )V,XX*qF=~RH%M)& )%J"!BH@|GP?ETR>MuOp^jV]nVXaE<ܺ7tsś}ްX`T F81B BH"F(-_ƜYG,YS&M8ys(ѣFvT*TUfkYdf-sȋw/~?/Xb >8Es˗1gּsgjի[}4쨵oc՝'Kkês ȶ.0C2 4+M[M/϶/xϿ8 <0Av$H#:ȴ; R>+o4pbϧ8яPqEzF5L+8sԱ@<2#|,;ɸ,JAiJ#-,20e29M6/UMqzL $H>%dP eՍ DEbѥ4RI_t+9~MS6} XM7+NAmNTT܁6Zi%Um54DD=lM \uIIR[I'1A0IPp,%NٿT'T{C$-K]oa }G:չNv3|a3qhP=yMINrop#7:oʹPP};LD=Xm&@zI]RiLe:әJtē'*0Jin| -VDx.u7yRƩO}Ki:Ui={QVӣCФnCZ_oe)*1WծvUɖEn?,ϐVҒ#fŮiZ%+YղÔ]5{׼g|e+}SBRI?NJ\ދ vlnQaַmg=0f\W:ءd-7[ֶ ]v׻n;^ w_G\24*YD׺n]_~p<ʪz店tΥ$;Vx/~&Lvi>װHo*lf1xQ?G,+ebNItC<)Ϙjs"_s,f!J%FnWl5Ʌ02Jnvv[Ow lkwrFֻp/|}v%q; \"9v Wpx4񏇼v]s7INGNe}0xh@_xַ鐇}e?{˼Vx=_땏v7o{݋Dnf5tk }O|4g0C~1C @S3L?2A$D5|A@DTEdD7dC8HB:@;C0C@@?P]EB<_`Ud,tE5R1TҊ$TBUQ%CmSMTU]J5KR0 S TTP ]-^5TTV7UUV%Gu!U/U?=[AhQ_U`7becdEY?UgMƔsUjklITp WN%ח4NtW&~WuUvVT5؃EXʩSq={،X~UvE5ٓEY ؄eل]jp؈؉쀛ٜٝY؟؎ؔ5ڣEڤEڕm٦ŅիnPMKHWrٯ۰Y%[ZUڴU۵5YuZګZZZE{۽ۜ-ۿڡ% 5`M`e\}[7ŌګEڿݍ \E]Uܴum]ȍ\e I8"˵ ̭[pYݝ5ێ5]H-e]e}ZDo]= ]EMEUׅ^^8- Z]\%_&`XF]ڵ_Y [`-^ &&aFf=XKȄMPR`Fиa&6$V$Fap''F)*+bJpa `?`0Ɖ6\!&86#^;<=)?b- 01O2.cXM]IXuc7ӕL:;c>Pb?R_M? cPHƉJ~K]eOdQ`6R6?Fe6pWX [Ɖekf^mf%&opgabb.,F-va|feNdf3F  |gl~ 6Fh6sb`.Pw_xA]>hpN6ifhcFY/wWqf0噰eiFFgKXkie.鉘ZƄKhj&F(&.khXneYfFk>hTkĖe~2FjHdžȖjFl.N=슦`ŦZHƉVfv׆ؖ٦mllDPengDv j`D0FVfvkbVmvf>mJIHPov^oFj>dnFvdf&Fo  ppO.p.1.m0nքL !'"7#7rK@݆ׄ mNp^pjN&qLqW/01'273G4W5gs37rL^qogfjr τAB7CGDWEgFwGHA&.pVVߞrsqKoSGTWUgVwWXYuYKr?M )r`pj]cGdWegfwghivj'gq OtaO(k7sGtWugvwwxOwrvCNvova~'7GWgz;Wfn_wp>~'xx|uXqg6uow'7GWgw?yyyzxw3F{7o{_ 7GWgwGw<ɷ|*ķ|˧T'7GWGgևؗ٧w}!!,{<<2121212121212121;.U!i}ZA+" 5 Oe|Dadc[K%qY:" # n6    ! %-5;BGD @ A950/*&$*:@CA""4$$1$$0&&5((C--F22H66I9:E;>==::993300,,((&%%$$!($&"&"   | s l c \ [^dimo$$l((n**n--q11m33k55m99n==q??vBByFFxJJjMMfPPjSSrUUuYYu^^{dd~hhkkmmvv{{~~ƌϒЕ̝ϢʧѰַ3 (` H*\Ȱ{̌Ë3jȱǏ C )W˗0cʜIEeġVzm Jѣ%TZPSHJJF&Z"TUկ`Êɒeò^Ǫ]˶ẝKW$ڻx˷/Z:J LÈ+^̸xI縲˘3kYdxlӨS^ͺװc˞M۸s~.ѥ Nȓ+_μУKNKK%ŃGӫ_Ͼ˟O/t=eOx;$ 6F(Vhfvǟ=hu߀!9,0(4h8<@)6xN<(PYؓC8㈣\v`)dihl`bIN9dk$7ѐꓡmŭ6rV wEjuZ1hًzX6P_~+UNgCt o:ڮ$nj{ܬƸAqt֥}ob;.Oh3'}VR4wׇʬ̉+{t2) MT{o]ʫ:¯gkҤםMGmޣ}WhLuZuewx_} ~uusU~H~swk:fRtq7huD|`h`(p[} }l8: 8Wx'x@t1ql7r(Hzʶl*l1HV|3Ge;8<}>A( Hw xqg|$Qxo)wxշbՅ^gkEd7' j8lxhw"cLJ'zF+l-`d7mb舶>\H苜XnKh'ZAV$T7`wH7V{](xpxjXXA7gRvwʸ~,8z`%Vxzwp荎w i ِ h#H%S׌S[uP[yzHp_'0 XYh9 ^Ũ?6l؇xT)`ȂU!).VyP'ɏ1ǒx1e5iB:9 ɓ'dhR8z| ٔvY`x&HȈĥ\_yl٘fyy&ekInYRi`+`wxzɗX;X\_9n7w9dEؙ))R闩9ɍke iyiBk נO盦hYVxVǹ&9W)Iչٟǝ)m$iz9I 򉍲XxЉ i:#*Dŷ4 ::ɞvP5z8:R)) 霆pF )$i{&Mw`)YUi7ɗVICJ\yFLNBPJXD G)['9|ZB!ɥ]z:ڗIdʍBzШڨ zJڦ% rty+J9zʦY!)v)]Z:zpJ\fʨz)js9ږw}z\*j8Jz=ʜjzz:ZĢ晬ڬjv0+iikzڰ抮ڮ)u}G`ZJ_ 6\{k˭ +02;3 #xU%ʥ &{[ڲj4{4k郳 [J[@ Z z(B*JFjXiDY_krahcjJk[m`p*k ۹z{|>~u<;[A{i;c*{k [=٩? j[F{KUYiu@P{ۻ 仹;1;S:뼬ۺj[`)o{+[{軷Ż:i:ZU0\+;Kw00,* =q۳V:l ԫ !\!Lޛ'l+,<-PV|X1<3˳*x;8h{Q,VFlH,NRlY}v [d|<ӊ|;q#L%KM y{Ǡlŀl .༭n*n 9ӂ><>?xJF~n+_-ܨy1. 79.@].H>F.KMnOQ TL6堰^<#d>`'i m~r>%ly#^~朝*3Nޚ, ~븞= z>ߞx#↞(޳ { 갾 2>鴞> >^.wC^n[+N N鰞>nO n~쇎ny .ٮ5.O 06~  "o^'o\+?-1 ?`S$~8o;o =/ ??#_ٞ pWKMopr?s/_C"~Y짞]`?^@m@배N0_ttoTI{:ZB?N `ڵ? IJ M _n?qSo/bfm Op oDCzXp\A??K B ٲU-f=%KbX,^|JF9IJH%ERJ, \7uڹ3SN=}TPEtNoݸ]3LdUVEU1]X1eE;LڵܺW./u‹W^]B B(bŋ2fd([^n2̚7~ZhI6}իZz*vlYiѲܹvo.&4bĉ1>c))WƜ]f4m$^x"}xFslY9_Ex`m F8? 6_nQvV25[y8ڐG&Z:@:i^eސ`vX'v/N͍|ePFfi{qu-o1޹M{7_E۔W&r-nEYpsNudg\l!\o{_(><Η>aMLp|s/c*wzs+D?M' B}Wۍ\~1_@0`fdKap;PAGDbX*\a[Щx4 oCR=aa IvDYD6@8G:Q}UE+:XoAP^kZC-FlӋ]FJudQ][9J_r+: $Bq%* ^җ&99=)Oxǩ:G2#W\Vr'09L %2XR.s[%+:9Yd+ZO~ڒh*:PԠ@BP2t|ڸy5ut) jl #=8~6 R"/mC!2F,E3fr!H)ґfĤGݧ?R6.iT1 әl\S:ՙS=.r)}s׾f4'FT<^#c ? Xj3a@r%8QnjWdXq X4~,gx?FU!bJsgPws'gh4{q+gy[2`0YbV%f4Ymv|i8Yϟ3L&w`htH֔N3R.ӿVA=l z#jfz nu_/6qk ]B} M ؟6Ilv٩V5 ESמuͼm\tCMn9{Iwn%{FW:yocmBțZs6Trf fu+no[g8Ǖ*r=%7 r31̸jn|6{=7z؋tq+@{վ?; ~CYo,|=b|Ȟt?NCWt-wc~{>}E/z/V37@.oKk/{{~}_zEU8]o^|:qm^}>Wz_|ן ~?x<ȓ.4 l? ;ӿ3@ԉ34k4tt@ A 4 CD AqA=3AWCt>tL? B*(x,,t.B 1$Cp3D4TC5$B['C-C;9 =B,B-@D'C24145T5l%ܹ9:.K4>DMN?|AE/#0SD#8DLEtEh8C|[\E-^AO?QT4UAhedftFg/[F\lC_C`DPa 3r4TTgTgFFxC.GmG^}Fo-GA<ǁ$t\ǃlv\w|0ytHG.GmG*njP .$ȏ4GDHuTȷLj-`ɖtɗIŋȌG(ɜɝIT4ʡJIhL "qQɧʨʕɪIMɬɛɮJ( ʰ˱K?@A&B:ڙ_78c4cDJKLMNOeDEٚpcG&HQvWXYZ[\]e0SFTVe`6f_FdVeffvghifi6f`^ha&l^kpq&r6sFtVugonmf)SUz{S|}~耾wv%g?+y~fv臆舖艦芶hNh>@&6FV !!0,R,111111111111111111111111111111111111111111111111111111111111111111111111111111111122111111111111221122222222222222222222222222222222222222223344556644322}11m12^13O25A46;5433888:99<<^ JѣH*]ʴӧPJJիXjʵׯ`ÊKl?ؓR=N8mSL.իoRHS7N,}F5hJL˘3k̹ϠCMӨS^ͺRbÈ-eitRI#~QEUO3iϖ}4 !!,L*111121212121212121>2G3[1y-*s(X#C!*   tS8-'#!!!!!!!!!!!""""""""""""""##################!#$#)#.#3#5#5#:#5#5#3#,############################"""""""##$ $ % %!!&!!&""'""'##(##)##*$$+%%,%%-&&/''1((3**6,,9//<22?55C99F<YA^BbCfFkJrS|WXW\^`cgjonnmlkklnorsvxz|~ހށނ݄݃݅ۉڌُؕՙӝҠУΥ˨ɬư½¦æĥŤǤȤʩ̯δϹѽYU2d*\ȰÇ#JHŋ3jh@EBIɓ(S\ɲ˗0cʜI͘6aóϟ@ JѣH*]ʴӧP2-rhԫXjʵׯDCKٳhˊM˶۷pݻxjݾ wп+[xqOĎ#Kku2OȖ3k~8h&jl؁H '|BLmԪgǞ][l0oNhg,ml>ݺ'lqKggSZyoAxg6UvSQ31f^zjOwkmlS)-sεl hی&('"<f"|[hr0ZK=}Lڎ=Vٗ :wS#= duRitD/c۽噳-Yj)h[nC)Y }A)ʨ5IJ)Y&2y-k~v'nhoe_8We=kK*-ʩ <I.쳶T)@k*+Vfྴ-VݢP[ҹ,+U"m$koA) U , 0C';-! G,Wlgq 0SPr'l(,0,4;'UI)/@-D=QxPG-TWmXg^s-dmhlGptmxM?|ͷހ.~SOG./gfW8.{~9騧[.ڍ'>/o'7G/Wogwއ/<;槏;[~k>G~ HL:'H Z̠7z GH(L W0 gH8̡w@ HDAHL&:PdH*ZX̢.z` H2hL6pH:x̣>ciF2m<$H=lh)IGm$#2iMrp )QҔ\$S쀃0ʶ4rIZ햾0IaӖǬ16djme49VVӚT3fDT:I@G')5q C,;t|OKs2$1OWJbkVkzd&D121212121222111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111212122222222222222222222222222222233446699>>DDMMXXeevv~xsoga[]^`elnqxyz{}ǀĂľƼȹʷ˴ͲΰЮѫӨԩשة٩٩ڪڬٰ׭խҭЪͧʤȤǥťĦæ¦ñŲƳdzǴȶƲűïǾʾ̾οսؼڻۻܼݾÒʢήһ?Y`P*\ȰÇ#JHŋ3j CIɓ(Lɲ˗0c$(͛8sɳϟ@ JQ*]gҦPJMtիX)Vʵ׭^ÊU٭[AֹM;*jޅ+ڶL%ʪ-+fX2Ə)G\٭ "(EBY hZVj֮ nZ6fsRq6|9r[Cgܹkg/)fyϋw~|{ٷ/j,Z՛'ǀ:pXǠ .z2 fHVVk vZhP}h)0$-m2tW#?򈙏=:uM;(餳R>dZTNye:HvA\~)faif蜩lp)tiA1yZ@YJzSG$袌6裐F*餔Vj饘f馜v駠*ꨤjꩨꪬ*무j뭸뮼+k&6F+Vkfv+k覫+k,l' 7G,Wlgw ,$l(,0,4l8<@-DmH'L7PG-TWmXg\w`-dmhlp-tmx|߀.n'k x䍇y^9ois z蚎N:niSz뒾;3:7z>/o?(#<@@"HEpX_"!Ovˇ|<_"?zCsQt}NT#1s|c=w@hA ҐhD p4 G<MƯd$1Y$s(. !!,f1122221111221111111111111122111111111111111111221111119.@+G(M%R#V Z^bbybib\ aO `E^;\2Y+W%SPLG A<==>>2&   -?H S W]`aabccdeff g"h %h (i-g2e6c":a)=^/?[4BY8DW (!M2P=uﴳ1sTc3 K?|O3^!mE)&1Z-jϱd!L{zw #3> CȡH1 !!E,&G  /U##))//0011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111112222222222222222222222222222222222333344557799<?H>@J?AK@BMABNBDPCERDFREGRGHRHISJKTMNVQRZUV]Z[`_`cbceefhiijmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~3A*\ȰÇMX20ŋ3fŽƏ CbcE(S$Yңʗ0/ly2͛g~\~JFHًwӫIF1X*5^Wv}vuBnۻ9RYxWV+w`XV@¬t󕘲2aY5H^ͺװc˞M۸sͻ Nȓ+_μУKNسkνw>~{y糧Ǿz{ǧ>z}燾y5wh& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TVieC c!w_zfwU|7rg*wwkzfwogޥe|!!,:22111111112211111111111111112211111111111111221111111111111111221111111111111111112211111111111122112222222222222222222222222222222222222222334455667725-t3*_2(N1'>2'23%*1()4+,7/0;34?89C=>GCDLKLRTUYUVZWW[XY\Z[]]]^```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnoooppqrrsssuttwuvyvvzww{xx|xy}yy~zzz{{{{|||}}}~~} H :XȰÇ#JHE 3jxǏ C2ɓ(S\Oȗ0cz$)bK_5sIsÛ> sF&-:ҧ> u *O_R5Ԡ[,Y] ;IJ,kۻ Jo]x?ѯߊv% Z3~埃(Qڄ9d=Y-ĝ~nڱ~rN}>%vCԴ~ΒYEG.C~N ۋУ/]wuG;Ggxl>ѯo:'jL~:' T]v~))T8;ExN9|𡡃EHL-XN6RR! IB6ˊL"i+D2,"IJl̤&%Mz(GIk RJ_LbIK([rY%-)LX<&2QerALf3IhRּ(Or&83)qV$:us|g")OIN'>}B#@*`=(P}1z(D%щʫuF3:0}rԡhDC*R=)J5ҕv.]hKc[6)rSm)P%ԡkFVQ2H}j*UdQƺ*Vխ ^Xʨf=+Ta@JM+\5ֹnq@vũ\Z5Xu*زG=,bX6kd:YVvkfۺYv%kh:ZvjjZejl:[vjn{[ipc:\wEirK\6ht3:]Vwׅhv]v%hx:^wgz^ye'aJY- i巿{<AF+35+s*3,qp$bzĿ"1 .֥c7B4!;>>|g(ZqJ &0 k#Ҫ' !!0,R0111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111221122222222222222222222222222222222222222334444557788;;==AADwDHkHL_LOXOQQRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}aHǰ?#J(ѡE3j8GC,xő(9D2K+6|I%H7~ɳgCO@ Jѡ>*exSKN㺫U'YOOщf׎L4 lγhUV[ }.^_׬ %\aG>{ʤHpu'۬3|6&17]˸2NMY/ e w#g6'f`WؽbO}8q{f=O^{GY_sH5Hvu`H ִ^t 8uxvJ8'Ո(Ԋ,"0>!!,J222211111122111111111111111122111111111111112211111111111111112211111111111111111122111111111111221122222222222222222222222222.2,5*7(8&x:$j;"_< T=J>B>:?4?.@*@&@"AABBCCCDD E$%G)*J./L23N78P;=R?@SBCUEFVIJXMNZST]YY`[\a\]b^^c_`dabeddgfgiiijmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~t࿁*\ȰÇ#J A3jQECIrǒ(S|xr˗(!h͛ɐ-ŜY[̞+Om1ӨS^ͺװc˞M۸sͻ Nȓ+_μУKNسkνOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)ePPs_XYd?]j)9ezịo489@<=D@AGEFKKLPQRTXXZ```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrsssttttuuvvvwwwxxxyyyzzz{{{|||}}}~~~¾¾ÿÿÿÿÿs@*\ȰÇ ŋ3"HQǏ 1rɓFDɲeD+]ʜifL8Yڼ'ȝ<} 4УEtcѦP>J5ΪXʵ ǔ_fHpسeɢv۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μУKNسkνOӫ_Ͼ˟OϿ0\p1h\I >? Rڅ6Er4!5H?H (V*JO>R I6R\ #9THڐ8$7JN&LMdR }E BTI͔`J1pbs u`F̼eTbfteBfHa LSGYRǠzV͡JfD}A!!2, *5@J U "^"$h$&p&'y'((**++,,--....////000011111111111111111111222222222222222222223333334444556666778899;;<<>>??A}ACwCEqEGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~e!!,#J212121212122222222=2u.,%,~-~2}(||} ~~~~~~~~~ 7i}ΊГЕɍ„yjߨ_[Q=#ܦ lT'B+5059z5Fo4Fc39,423323223///))+/.=32c52l73t?4qH8oRGkZRgb_feeefffjjjuqq~u|{vxtoqakMe;a5a3g3q3x3z9}?B@P\huַƺ *U` #J( )jH0Ə 7vtqȐ8C)PB$dr&͛8sɳHPzI(DF))4fҧPJ%jbCVx0NSE Jf: ;6۷p%4ݣs=ݿS HJ2?&Pfށ.4qˍ >LBWRF;'1OC4/Q&p=C4bOZ쇡S}tҧSLę~Cڷs<{8;zgџyi p9rF V]'zuWyfHQk|Us-}xUc+u~xysוU'hZwV]ŕasl5c`2٨$o;zUW% b"hi]d$yv%i=0ޔ9d%yݩ%s )z& br%◌\F=FBGj-C. 1'f?"aUU)qJ3ҩ]o"7F+mqjN[)+E:, ͺa):sMk4 lNkbZpz=T[9j([4vJ,׮o؊ ޯ9TZ[K9k™nVWPmHP1YS4dmfڱYn9V<[WΕ1 1viVk-.31#mI}+q#оfCH'(:.MZmDrץ Q\$SQq3qrGC86GsYmCrW±Q=pWƟ( tvӚysGWw/WP0K95KetWȗ ͻsp+?zFO%?~O O!W BR ʴ=*LU1Cu05lC:0Z-"ªђe>0pa࿨Ů]V═_葿y2{aUgͬ9t]6kid~櫟 u?XId@Y.954=aPxsSU&EW њ3;=auJ%AxYLe\/4~1ԁ`Մ6yKdlQ8#C&pac u"W9Д—#xMi[ӀP%[\/:pgsl2HRJ;>:bv,})O2aP/h=LZs2afI3 6$|6iX67JЂeaІ:D3䗉ZͨF7zPp HGJҒ(MJWҖ0LgJӚ8ͩNwӞ@ PJԢHMRnl#PTJժZXͪVծz` XJֲzuHSwG8JWqI5rq5PR W+^mA =d'KZͬf7z hGKҚZЃ6[u@,bk~`[vK7 YMr:ЍtKZͮv+]m-@x!Z>qmz+1om"[.Ȃq@N;'L [ΰm׼}[E^X"f_K"lVw@L"HN&;Hz M1Ole a]fu1ec̵Ƙb@xγ>AK^_]2LW<,F-_![yYXGl΀NWV?A6JlжNtJ[Ph7xpsaԯζnYʳFo^-x׋a=pl:AmaGN ܴu\s̗ܵUS48+ǘv+S(OWd"Nxg.v3ew?Q|*&gҗt|9-5<z;>7y%xNg*-iFi.k<`I ,|x8QPxV8y[|w/_//ƭ-Ir$B>~=Ic!;H}C_tO>O0}7q'x8`|?_ha=چuoә>F{xcc yHy}z~XXWW/zA6֧c xxg~xc.~0(g6(|qЃ>؃XR d{w;X0@~<3~SX7xf ` `ְ A8*U8}K膻7 x18XK1ذ ۀ ` ꀆ(w}Gwph=H 0ȇr~[ ch؊ް p `hRc|?{ ~{'{ q8XXXqzᇉcc0(xH&8yhp'؏Vڸh 0PGwwdȐy)z ّh `ꐑva*cI.0 h>>֒:9Dɏp @ EI<ٓ@9>)OyZp ?ҕ^`! `hVjUnpcVpIxiV|Vp P 7Y~e i909Yyٙyဈuvwɇ{ٗ| `I(ٛ `wYy ٜI` Pyؙٝ9Yy iyVe999ٍ@:Zz ڠ J `Yp6ey P簢,ڢ.02:4Z6z8:<ڣ6 )\zcZ'e)Nj & `营Z\ڥ^`b:dZfzhjbj 9c@`Vpxz|ڧ~:Zz6J[z_ ` Sa(pٖ:ZkIwTOeڪ*Ut9PNyQZ4ٍcx9Y: uz$JΊ M9JQzڏ\8Hh ԙZjQzJ:hhدI8z 0^({ h5: Ű۱lŃ N Uڰ h%x.KP `05䀥A/$B;?س JHC۴N{K+T[*X=4*õ, Xbßl_ aLz3˪C97$7LsNrD|˸!1lK˧E;,Gdɒ1;@BBD<0D c0}l@˄L*'d<4Ir(m\(VM$ztOe!̲h&Gڬ$,ʗ"ŒN GOLʥd;2R3QR"]?@B=D]F}HJLNPR=T]V}XZ\^b=ֆd}hflްnc r]&Jvjz{ ~io&p؈؊،؎ؐم 5Pٖ}ٜ٘ٚٞٓް]ڦ}ڨڪڬڮ 0۴]۶}۸ۺۼ۰=]}ȝʽ =]}؝ڽ=0=]}mm֑-ߛ]1ڮ>  }=^~.н֝]&~(^m" 0]6~<B>~H N)>T^2\.f`m>^ffMjmJpf t^mVzކMb^^:~抾 l>F^vR^[N臞8>D>^J雞PV.G>~ꮾ N>~뾾('^^̞-m^ڭܞm>~ M>Ս~m_k ^ `_/!O&( .0/O68|:>?@>DFJ_LROT_~XZ^?`>dfyhlnrt_~xz/?^舟_ovog?q^o稟{eb>_jtOv_2~ʿ=?I>Uc7_A~@ zPB >QD-6HF=~RH޼aARJ-]SfŋSN=}T(͚@TRM>U*ѢUV]~V,բ>EVZmݾlMo^śW^}<"‰ FPŌ$?I-_rM=sAMFtQ]u5ƸmvU}w7ōO8\r9R]C_Ǟ]ݽW:?L.?#č0E @_4!Ag#15&G?pC!CDN9ENF,\/H"njH$DLI&הI(߼LJ*J,S,`8Nx΅X?)xЋ1>R㍙c(AyʑI䓷LY/Yny̗aPMqŝys Zh.zȣOIl#Zk zïO+N^[n ;û>N}oJl oxWqQoM!GTər09!]t@I/QOLۄ7]iK\x߁?L!kx`OHby۟2zqz߮Ǿ0w{-?f/5S/0_6E?~gCtlXTL`@9F 278MyL !DG0ɟ ¿N|0 gڐH8̡bFI D"BH&:QHP"CvHEX, o.n|`đǨ2QChLBщC:vx܊q> dHɢ"Fꈐ$$'ٞ>Ztd6x, (CCR用*WyJHefI%/{G[&{J@frt!)JiN0in ǩrL*v񝄌)z$i~Fl ł6xLĆT '*Ċ`7jÎ< G’vHLW&$f*0 wj L꾦bVZ ƚKË˫ZB 2ﰷK۸&ˬ6[΂{ FrKV۵"cfo˭v[K džWK֖۲b3R?ˮж[ ƛ'Kۯ˯k.d&3{dc[ ;&\R|""4Kk~J`+'+q*\ +ڰ:;X~pnxTb Ud#' IId'#Q"Cl^97C6UUufQ;Un9\p/$v<3Y5j^W,,@J*h%WjM9HnTܛK.Ӛ.d_ED⳯&/UCk Fvlf76=mjWǖmngnr{8FwǝnvW{톷-5ozwo~x>pGxp7x%>qWx5qwyE>r'GyUr/ye>s7yusa"zy9"}tכANW%.~z u]M}Cӝ]EA׽*~?D>↿[yO[|/Oz7.xe7 0Y=_~ 8M?}Md?o۾x + W=]"C1 iTȾ_q>}WOOܽ}w?I+K?[??˾ @?C?K$8k>[?Oȿ$@ LK:K|>;??? dgx@?,<A D@sAķ!B\?&T904A1DA, h=˻1TC#97C;:,+C9L:==AýC|G޻4Jɥʏɢ,DJlʓ;aD9:TKo=P`Ɉ}<>gȺ $?i#̺8G̿?bFʉKKBLŬLɴJ̿LL\SƋK8>@:,3]ʌ4}6]?}|:dtI4L-S'}S>S?ENS8ݻDD3%T;FeJ>B:?=:%PCUREC%JKST4TWuڃG%U|5T=TYYUTQM[7ճ$H%PeUdTI8ݔÿT؅֛q>]8Kp֤VWq:rMsmAtWsqr=k;SUSWlW|]TCDW,WhƪX|kXvׁȔW}|-}= T}{@Yx%ټXؕXXM؋ȔSW~nKTXXKB뷨-9;/ՑZڝZԻZK[S۲ڟ#[[۲MحuHۑۡ۽ 989euDžȕɥʵ%5EUeuׅؕ٥ڵ]:Ҽ݃[c\c<^R;?dA.B6AFd@Vd;BNFGdGHILMN&}dOP&Q6eQFRE;؅W^beb(e:XWnԭeн\Ff\[-^8:xe^^`e}hcsdfv ]g`lVcmuoN`:^gpeqgXn`m=f\.h0l@e}vgy&g]_~e6c~^[胖{ftkF~&.Vfz(X5hfb@tN&\FiӅh勨g`~1|.>~h]h3>fu^訞jɭPj~ej({&6hui`疎~0kk8lsk}]im&jziэuf>V86glsv^e6nEh2vn\>&6vibнlFޭk>6oV.loJn]Vc7p8:X&&c/}p>p٥kho~cF﬍ ''knpjlfz;go_/epga?q di%c $<hHAp^/[f>g:f4<]s4?~s3!exnF.饶h);idpzr%'l09|HYNiN;op%p#mA)q~rd&=,F=Tm|tqqquSeeMa^oB/>qXXt-wu%rHwc/spr>uQP_w/ua?uvqv @k=uVVu^'w^tgpκ6IYx}sgvu] ~twmeqk^hx'NlOj³#~m 7sOgkxx]/urluh e\:ɽݛ'cgw7USTWoo{!!, V111111111111111111111111111111111111111111112211111111111111112211111111111111111122111111111111221122222222222222222222222222/0,/)-&,$+"* {)r(h'^'U'M&E&>'7'0())#**+,,$"+.%(5(&;*$@,$D.#H0#K3$O6&S9(`@(jE'rI'P%V#Z#^%a'b+c/d:fHi\|nmwpyqrrssttuuvvvtwrxqxqykyf{lzrzszu{x{{|||c H*\ȰÇ#Jhŋ3jȱǏ ڳ@ɓ(S\ɲKDI͓1)ɳ'L> eSȡHZ(ҧ=:JԪXi^ʕ(Ю`q~ Kv+ٲcv5vmڶXv.Tv͛/߾{ +xpQ#Ix1ƎoBlU1噓/̬%+?N)zX%[N4륫_t͚vjۦq wgߚ4EgjO C05Xv_zbT>Q3s_6ٰ܃E8|7}(itFXhO·hAa[̃*50$#JU\ fsM/V(I4bTFJBA٢PS{H-On%5$Y%TaY ]J3}VEFf͗tf; )H{Q$(y6%VumVnoeb]U*\%HM$무j뭲>뮼+k&6F+Vkfv+k覫+kkR9l#K# K 1\MGg+{q9,» `\崬lՔl3:r9Az +C ̾>??A}ACwCEqEGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~e!!2, 22221111112211111111111111112211111111111111221111111111111111221111111111111111112211111111111122112222222222222222222222222222222222222222334455667799<.22221111112211111111111111112211111111111111221111111111111111221111111111111111112211111111111122112222222222222222222222222222222222222222334455667799<ˌM`oH(\ȰÇ#JHŋ3jQ" vIɓ(S ʗ0cʜ M4ss͟{ JG7*]'RMJ)TXj `֯`veYcC]6M) $mKnUpj߈,2E0a'i bŐޤ2XȘޜraV~ tVrBڴ먁G+dMm,9u\ooxϴ.+߉4#Ntճ]w~7|P-o Ͽ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*ꨤjꩨꪬϰ*무j뭸뮼+k&6F+Vkfv+k覫+kzj9םq%^;pU;1[lSTqc2#K%kF){ |oP@3:/] /D!!, 22221111221111111111111122111111111111111122111111111111111122111111111111112211111111111111111122111111121212221222222222222222222222222222222324262738393;4<5=6w?6p@7jA8dC:^E;XF>PI@ILAFMBDNCEODFPFHPGIQIJRKLTMNUOPWRSX\WVm\ObHh@n8t0v'xz{|} } ~~~~~~~~~~~~~~~ $݅.ԇ:ΉDƋP]l|@*\ȰÇ#:̲eċ3jܘ1,8I$,if˗Q\ ͚2gɳƜ:} :~$ʴIcԩU2JmYի`]c_ê,4ΚӲ.[і—ݿ.RYc̒7˰,r( 1```1gZ|̗Ϩtec ۸sͻ Nȓ+_μУKNسkνOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)Dy>H&L6PF)jMiXfeZvMrqII&fWfXk9&h&XmWUw '{'gS(V(Q֨P(:Z)iO)MVjM**–K+VkK~kIz+Z,RHN,*,GVF-Z-ڕ-F.UD9U™&q>T/{\~ԽA!  )ܰ 5M\1ƔrƠz- 7M0$<*BKۛsA6Ll=A:yA5a>1O<+<8%,4!%1')6/1=8:D@BKJKRPQWSSXTUXVVYXXZZZ[]]]^^^``acceefhhhkijmklommqnosoqwoszpt|pvpwpxpypyozo{n{n|m}l}k~ihfdb_]ZWWVVUUUUUUUUUVVWX^chmquz}ģɡΡҞ՜؛ڙݘߖ Hp*\ȰÇ#JHŋ3jȱDŽIR(S\ɲ˗0;i!5&-5׳ [Ő%KjμyQX@سwn逵{ҿ_9qYQ߾/['}w ӏ>QSqF(G󽇐8Ny.a9|!,)Wtw'͊.آѸ72D>6oXã?rM6R\˜aW2$d(%.`fMey)o(idIi` xw]&袌6裐F*餔Vj饘f?i)XvRcj9T*PP1*+d뭹Ѯ*E;k,.FV;f$v[lڲmZKЖ۬z{n@!!2, *5@J U "^"$h$&p&'y'((**++,,--....////000011111111111111111111222222222222222222223333334444556666778899;;<<>>??A}ACwCEqEGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~e!!2, *5@J U "^"$h$&p&'y'((**++,,--....////000011111111111111111111222222222222222222223333334444556666778899;;<<>>??A}ACwCEqEGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~e!!2, *5@J U "^"$h$&p&'y'((**++,,--....////000011111111111111111111222222222222222222223333334444556666778899;;<<>>??A}ACwCEqEGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~e!!2,&22221111112211111111111111112211111111111111221111111111111111221111111111111111112211111111111122112222222222222222222222222222222222222222334455667799<]@^B_D_F`IaKcNdQeUgXh\j`leniq}rquyrptnup~xt|||}}}~~~SH*\ȰÇ#JHŋ _Ə CIɓ;܈˗0cʜ&˙8sJ*{ JѠ]ʴSF}JUfʵלSnJُc=˶ۃaծ}K׹b=͔,LxྈbPj:Ɋ3kXo0S{/xSybgRny ;{zqJ"qk3 e2MbM9{%6ftv߸a0PKf?GlAiQ'g`j3GhLcCv@!] nryZa}T,"-ƈO!!2, *5@J U "^"$h$&p&'y'((**++,,--....////000011111111111111111111222222222222222222223333334444556666778899;;<<>>??A}ACwCEqEGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~e!!,p222211111122111111111111111122111111111111112211111111111111112211111111111111111122111111111111221122222222222222222222222201/1-1,1+1*1)1(~1'u1'm2&e2&]2%R3%H3$@3$:3$44$/5%*5%)6&'6&(7')7(*8*+9,-;/0=23?45@67B89D;?IBCLEENHIPLMSQRV]WVd[Yg`^ggghhhiiijjjkkklllmmmnnnooopppqqqprvqsxrsxuuuvvvwwwxxxyyyzzz{{{}}} H*\ȰÇ#JHŋ3jȱǏ CIC)L\ɲ˗0cʜI͛7Iϟ@ JѣxۉӧPJJG)ʵׯ`ÊkVdӪ]˶۷͞ ݻx)w޿ L`w^̸NKwnbȘ3k̹̑vӨSg Z8pJMRZ{30 N<2es^YУ:RKeIνwR{b=XhWO`P tv%,(5\ gXVhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*ꨤjꩨꪬ*무j뭸뮼+k&ɳF m^9`mdINm,;)pSеT#51- +52߬M7ٔ#h/-3ո"N.rst-7}gģO<ӷp3ǵ9݀,jlL'<70K|4LFM7RN8#tbFcNeVgbilktlzq}svwy{}eHPFMy(\ȰÇ#2ɳ]\ñǏ CʔM H˗%$͛XO:wȠ;]LL:M 5ѩZ֭8$iL`AIЦVWvvˇo (7߷$m;Hq͊c+gֶR۱d 1Gԉ.ڣjҦk6+䣲Ek98Y=24cr9k֭WzqB&h~e|EĪn?Qw_~%_~>_0$؞OTLTtLBeN=#@/P%$C D3O" QdlD@4(ߒ:;PTD429O<@ɎUI/Wc\z) b9%Nh(_]Î4а ̜[y'4 ybjBÌ 1~2j'$#-"i^h2Kc!{bw*A"j0L*CJm.2DlF[^$-{^kV[d~Ƕk;/D{/Bo ,۷L n!!2, *5@J U "^"$h$&p&'y'((**++,,--....////000011111111111111111111222222222222222222223333334444556666778899;;<<>>??A}ACwCEqEGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~e!!F,;  "!*6 LZ[YSI8(#(1355=I'Y,_3Z*:630|%tolj%j5kFkWnxYij_a_jXPrUHxT={N3H"=?BM Y)_3f9uأkݺs]|ћOO6XY ```B5!Y8a0hJ" "bb_~x/X"5x:j8>2c.hKDBI@&RfɤJv`(Pdihlp)ti'gX~E蠂z(Zh.:I;*I^xч$>)\)8ȫH(*Z)먾jRI#&l%Z+â*,"ziZl,fJ_> WP/qdko›ҫol#\G Sl0gPsi- $lrɤ"ܟYm,L˓S3xAH, "!3k_(2לΫDG*\X#)7`aw]c $d,LjWl5Guwyt}vˇ˝r΅#޸Xc)WngƜwN7sÍ6`3aꬷn OV^׮xwپ#$^|/"{pIa=&.V}!^>?>>u#d=!?ا?0C]5""Oaا ς T 0N2 lLPI{VHB&ta aBʰa@ pT"PD,`@83*@S̚(VQWb@!~@b ?!U4c7.dQ"#Ų>|!'IA*rLdE~VTd$GFlp !pAIIHK"W_0:H`豊4 Y!)rl$&k9)+"D2DQ4ajNؼ6bMnfӛD7Mrs,g:ϩv9NzӞ>~avqq0HRE#^7jx@E\ օ= HQâQiI7ҏ,d|iDK 'S`8Ӟ-1h\6юWs9ԐUU5U}jԮbե_UiXգ^Eh.݆?`tR%F_hkIUU^a %B ak͚,y vgka%Yrc 0[e&,A IMjWֺlgKmttR2h@c0cFBoa {8 p9L ~H/񏷺XIpbWL b@XԂ s :1ko̫]sWޭx^!Nf"f6S(E6p$8qs>z9B6E3яt=HS,Nk>$9юyt(UD(R WHu6FFba Ű\q)N ZX_ATw5lD1Zm j81lVo{u6Vms}^{un:9xn{xjT6{nw>qGv1NCxA팗\ .rȝ\\u=mg_u=y >pj!`[adܓlҮ ]P{Z@7ls;9l&/FsAВp;,\O>E+3dN3ьO bDM Yx>AYsg\Y8[y:1O}vWc˵}]Kߠٮ%'?x=)Ar^ CO}7#ߢCp/>'HAs~g?__yHF+b/wdzZ0zwz''~t B6DgnyT}'uw{'W (Jp<g?Wbmw~w>rDf@Xyf ` ` ͰJh Q SXW(PTȅX؄ xdx$K^ Py:0  v ׆g f*Xuw{p{rUwLJ@W W|70مz膚XyͰ3~r~cdl膠ȊXy  U3Uȉ芝hHǨȸ茳،̘((zVH} X{؈٨t0Dp5 ojȍnS匐(W(hxϸ fXy Clv hA"Yh ' (ɒ.yВ/91 5I2IPieP`X^ M: ::Pٔ ؕtEɇSf0<_))NHZ c)ݠ`pfNٔNy )x}lP~ٔ 闑ɔ `P~FIiYiiٚy 5Дtoydi~XNI iINK]ٖ( bYxiN) :Y[LA I%YhYvG%) ;ivؓ..9Z j3BYDK@I  PU T8y:J DZ @eE9 ^/5JP r壙X+:^@3*p :Qʡ: vPe١X* |`LygxV%JY }z |U m~ڧW*J|a :j s5 *)ըn pꦗ mJlڪ PL:^KʣH Ntrš8 z jvʚP>qf` Yۊs׭) 皮v躮ڮʮ zvgJ J Phڠ: ` y h[; K j `fХeKG 0 2;4Kΐ "|`nG 9;GJ۴FIR `? ̀P [ZkHKfh[k.;bI+ k?;C FMtĢиo6 f}g˭! @#mֹ|wڮ 庺j{z idP :Ơ zp:ǛҋkK˽ ϻ p٠ C! ;+ܠѫ tP ۿ@ ` K{}Y ۽;,  |^*|0 P |[$l(_. 2Løl'+/Ú 5,9lW|Z{pJ۸fjd@B=D]F}H-I`0 ZPգU GNb=d]f}h-`>lipa|ΐ+J;JFn{Do}ǨDQzi0|zgwХ۸j=F꟭K + Ӗ%k(Jy}ل=}8Dj۾=]}=ܣ̽=]}حнmݤY \rdNlπfwDŽ|=wzzT-m؍MlV]-^+ @@p f]pQ޸4y* m[04^6~8:<>@B>D^F~HJLNPRNl{`mvlvo ]kV \;F؈mZf^ޑw,~]]_^ = ư]ԸjE 4|u肀* v~ꨞꪾ>^~븞뺾>^B V`ϐ@ }a>م]ӎ fPN;MNF]ژm ˰_MJ]}R0n%{cݦb: qFV "?$_&(*,.02?4_68'_`n?گg[qrߣ} >znk6 =J{vQ +BoMf>.xgP P :ek.h -=n `lvzukg['/SP*pPyP:?._&0b03 Ehᚭ>hgh0 m脵zVXίOg[&% ye _p/w QOy8@XKy, r %RLQA%yhqcE4XR%ɓ9BdpL5kL6}TPEETҢIS&I^]ŚUV]VVXc͎tagu5-޼ml^w{_ F?Ydʕ-_ƜٲOSTlhe;:(S;Y ƄSWmo-xO߆mkeǞeS\-ѵIi<~^ty\o޽+nT~0JR+.jAJA pB$̮ 54LC6Aܐ14C1EWd1&FjK'BӍ7碻7*G @SZKrIx ڪ(:Hrhy7yZńPH |IC2t-Tˏ̄B kd}5VW:/ܻm4&oV/x$gRf<dN49ޙ 7Sbӛ &MO}uU/agOw)^KW 5v2IIQ!{IMMCI`n\R&#oL&dYg}eSL槿~?`8@/wd)v r΂7F& arКT |g aI@Q@9v3ktJ5C UB0&!)HDLir_8gQD&&.vы_c8F2ьgDcոF6D @::Ў$]/Ǫ(F(j421nv]v׻ox;^W+eջ^ҊlSM C׾XE~ߜnD?ԕbE_1`T5m|a K5ް1<!6q) bxյ.e["F`Ìu]*7HFv]La.p6Ov{kYc.+JP3Va?MqqT5 Eқ:wA :Wh=g2i6t @ъNc,! qL{Bt vمrUjYZZ0D#a["H! n̬#qU6ЀF4 V PھŴr[.]b{-mu^3;Ʉ:tGӡ.r=FxޔjZ0!`7h,kmhġ}KX$! i""- :'T1 < _.ҼD/ć3=@8҃CFҭcŤGj2vݳ2 pCNgw2Br~t;mjo7%?yWYT*-qBu~Ten"`9$1 Wp2MA!"P"0Fc G~O1C[]Qs2o0Ý ׏w#>Ӟ&I]yR,c=cb(YmVc0G8oX@$@c0 @[H6ՋH 4 @@|RNH R(d\4lA BB#DA$AA!LB&$#B%l" l>3۾> >Ӯ>R3;PӾCӿ=Csgh@f,K0MfHV(A DK43!A|hO\9 HM8KX(\8 ,VDADM\^E\UDa4] FcFd,F`LFf\F_E^$_i,t..?>0̾5D2}p<7ƣ?kC}Ǣ"'A^kc`D/J^I fXlTtȀkHi+Rhȇ Ƞȏ4eRІXMpHRHDHɉI<ɑIɞɝ ʜIIIJ,JHl;.T0ĴG1rlG3C"4t8céFG|~t˷ @ĹtNN^hm솋 @ LEÜKoxiȌNpTL \̺YPlEM0 4,LL4lMn8Įˮ/lKñJDK+Ƌ|K`/cjP-F4V2= 7A3^:c4n =7q;d@FD"BvGvaC EJ> EH60r/߱R6HV%Ufe.9Xei[}eX^>?`~O]#_FJefvfP6IiNgffinTp3 bfzuc`wtVgvg#f-|P-gh&bLc}6,G臮>hUP4nhG`ww#nnFbihO阖]̵ixvxiivj}nO6yH.ij]in棞sP%.ְ`v~S\؄^ 8kli6\XeΌ`v0lĎUHH&vǎYla60kcX؎m CNU^7F,m<$vml n\R˙mDvbfoVd[EXVhN5˚p#PKoWo2m d0ZJ(` wqʒpp3WȚcI p_7*,yq#A *#Oq!gRC)&rnB12 *xQ24o1p3ws*r5a~gAIx l' J`" Zx]I! A8WCa8"%ؒ!((ԉ18)x#{-d4#*#U$MRgcQvcR6$YjVz |Жey^Cbaiq9U]y'[nI'}x ߑ{y(b蠍"'J:霂B~jkR)YZJۂ *5Dʥȝ:+*H֥J+u:[ f, Jkިd,zz[fߚ{nRˊ;+R;/Y2o_/& 0 ﶞ*<1X%*q{q1)sӺ" D<3cFLl=|i<|4!;}W=N}ݛooH>经a;Ⱦ|O!"|(T˯"s"סOD(!iJ yrr%p렼@'o3a(؝\- ~հJѿ=2I,"%R5bwx*r13"l)D,pc<")A2I'K#2Sqcd#(81M7c)AYx3#\)ρtg?7Dn"*Q4(FcyЉs`LgFC*RlhE u.UI%Ҁѥ6m)LcP[.7)Fsx3>*R *ԡS #'ԩsLLGqTrV2g Ү՛_+0źղ՘%E)ֶUo+&ҺkGIǀ+{RQ{=,d+yWEa#YʴJrMX3KՖ^Y+A\lskƽ5cu+նJLhָy-fdVUKF(e҄ZiK ә9M7OڦH]j6SEzjWk ֱi53K̷iuʿtM=##T }fkg7Ѯkj:&H csv\m;F\em;ֆz;T.^osߝ )ƽt9,a43}xL[ܺo]q\dSGꂛp2f)r}x7>s_拦rwR\lVyޢZHOEKtz9ԕZZ0'w)u &ouO{]=pz>j_ ޏV=c^G|̼x7ʳw\ĿpU'uw\ Glf}] ;syo=߱;|O7~9}.ׇ~}#y9~O~ W?0n]UY_+_N %!`R՞FL U ,] KZ ~hꍠ> m ) : R ` !g2a:*`% J`f^j!(a҈!rJ'aRʡ$aHa$!2a  !!ZH*"b#V_"B"mI$vZ"D1G&J&'bDc:Vd,A $GG$HdDdFƗǙddJ$KH#L$dF֤MnLΣND$P^FO#Qee9&RNSS>e%CN%UETn\W~%XX%YY%ZZ%[[%\ƥ\%]֥]%^^%_e\ne5IJ\430,&c6c>&dFdN&eVe^&fffn&gvg~&hh&ii&jai"f2I1Ħl&m֦m&nn&oo&pp'qq'r&r.'s6sa>'s0I3\'vR v~ux'yy'zz'{{'|Ƨ|'}֧}'~~'avҀxBހw'5A2v&(y'yRg/Z7xC3\B`f(~(z(h(ƨ(Ψ(Ҩ(i)))&i.F)>7@ $RʨR-IvRChi7\蛎zÛ)ީi)))j&*.6:*>F*BNV*nvj~**)v5)5xAijp h)i,I5t 6l6,6D2NVk^+bf+nj+vk~+븦+++ޫk++ZabnpA2\+@ 8kPAjlíB,&CnkAd*> 6h9ɚ,ʮʶlʾ,¬,ά,lެ, --&->FmN-RV-aNj'>>6$+9$kvl)~9v-9*---..&..6>.F.n-m ؞mr ޭz&궮9Ø.֮...//&./6/>9j2nĚb.슨nZ☜5 d隲9į///00'/07?0Gp>h~oNA Lߪ ojo/$I;0 0$LA ?İpp 010p7?O1C_1/g1wK1{&: 1 +<ȃ<q1 1!r!!'2"/!7";2#?$G2%C%O%W2&o&wr&2''2))()or5*q!<%`!FAZ.2//20031132'2/3373?34G4O35W35Os"D&r'rCZI!3993::3;;3<dz<3=׳=3>>3??3@@3#HB&x38Ǘ C7C?4DGDO4EWE_4FgFo4GwG4HH4II4JJ4GB"0B$T& tBw8NN4OO4PP5QQ5R'R/5S7S?5TGTO5UWU_5R?B$HLwMDZI%5YY5ZZ5[[5\ǵ\5]׵]5^^5__5``ϵ%`B&lB'W-K '<6dGdO6eWe_6fgfo6gwg6hh6ii6jj6kkv'tB((b3v8K`6oo6pp7qq7r'r/7s7s?7tGtO7uWu_7v?S6cɼ}7xx7yy7zz7{{7|wO7}׷}7~~7w>&w78'/87?8wG_8|g8w8d888Ǹ 7@Bx8ak889e6m6}7 O9W_9go9w%a6s7X+99$9׹9繞99::'9m6'|ɢO_:go:w:w&ж4W:::ǺϺt(K:::sW?::?;GO{L#{7;w;*+A::S(P,@ $:;yos7c;ky{{CW_<;{,G}w=>ٓB=$8ԛ;y>_>?9ˡ~}ᓾۻ'˾/?_:c>?[G;}go?<|9>"|c?g#wS?IZ?E~3@8`A&TaC!F8bEF0fԸcGA9R+'QTeK\Ɣ9fM7qԹgO?:hQ,%Ut)JOD䨒*8UkW_dYgі=Zoƕ;n]wm9լczuױg׾{wov翽ѧW`p7?~}_޳~LPl!P ) 1P 9A QI,1C P#LQiqQyqBqcQ!s{H F`\lrI)$2K,ԲK.<0J/4pL0LL5\6sK9L`δM=3N3NA̓=3? A-QC#ERE/eMOAQ *MSLUVWUTT{VWWV]_5WwWauXcuVbEYeoXh}}Vd6XgݖZf6pvjV\s]rUy7{\}~4ԁ ԃGUU3U~Ť8b)X7aΘc7֘dESnY~YeCem;g䠉蘅Fh9ii.'BXkPux/kS=U6Fݎ;Ն{n+[o;_>蟗y:Wzq/IO?ǨlۆnQ5~ǿK7@&Ѐ Dw@ :p `) d`AA~p,aMHB(t[>0S >hI@RC#> ATb(R\"H)21\"&jb"8F/f E6pt(G=ZqdG>ҏ!YHErd#I` OG?jr6 N+e(MIJUt([ WR-W9\r/u^S 1yiQRҒ&MgbŰ5IMi^sӬ&7ksf9yNnvS$; x'=ř{3;y,(@yЁdh@PB'ЄV4hGAQBt%IMRt*h:L[s3qS6#7NTTA%P}zT8U*QT.PU*լ:Z)UհzEkYխ`EkW:ָuie\ݚ׳국{k_׿ 6w5] *6uecәN?5Wy .lgfp%-fM Ԗj[~u}kOKz-o -.pa{\ep\&ʍrn׷.wW5x[^W.y R,¼ oW~_pK`xU0l3># Cx01a O8&M'vQb4q[|cۘ9}d y;r#8L^|`؆7nhX27|,brLf2Yhלf8]~s;ytn9ςsgDЃ6 h?;Zҍ>tI_ҙ- N/Ԙ.MjTӭ7jYǚVq*JF_[.{=ld+&ld'{ھ6mjO[mqK{7mr?N7mww}o}gmo~{okfף9 ?\x!~qk8'򌋜M>r<%gWs072Ϲw\''+}IwҟtO]U7zCo0 ?9ve7ўvmwwϝuw}u~,^79x/w!yO1yoAzя77/x¯+T`vEq{De{~_G>ګկ_4o~7џ~wϟS]p 0p!0%p)-105p9=A0)TpY]a0epimq0upy}0p0 !ZAn or!H PE 0 p ɰ 0 p ap  p p Ep1q  3!4p@-115q9 Q/#H"b)Y]a1e?poy1U=f1qk Cqs ~1-1oD1E1=1qٱ0s>ˑ8qQk1)`Pw1S!!2"3f@`q!%r$I$M2 ? A?rB5N2'ur'y Q 92!ko4zr))Gi(q-))2+2gRK**c+,2RQ,,2-.R2.K..30 r 2-11'A+2,3., s393P2m-+1/3S3=35U1 S*-KN,V6m.[-;26p663827G6y|$s93'!-8e39E9:9R:q:;3e=wS>>=?4@7Q???;B@tA424 &#B14E3BsBB4CID@D)TD5D]EE%TEE7Fq4GuPF?FF3BGtHcGG) HHIINI1ITHJCTItKaJ4ʤtLKKGLՔAL'+L4NMTTN?NNOsOP :uPoPQ3Qu}Ҕ# R@ U25E K2GTUpS;R`2SQe74*u@#P'GuUPUeSC5 OTIuG5VW \uVeRsUt{U?R15+U<+U \PZUZ5Tu]+RuU[ @bSR9U]=`_UR_`^KU` vUU`U cIUaQUX#T`aW_P] &^%V_]ua\U6`S+5S5eQeV^}[foT6[ h d`]T6\Y5[CbOe eav`fSY6_UX{`ARǖhiiUbtNe5Yas w]9K5\I_MMv[\_a[b%a/Y5c cGC`dOO>-=U>4dW~;u}XYg6vq1遷ia^jjkU{Q7l}6ߡ>0! y ywt7x ouv`6p7Kpwq/?ޅuiVr7Zx5Q_YT)gSzxzvQWv̀vuvVwW7wS\9tۡN~i>ۿӨSVUW|x` .y>!yMXGGanas`u^`*bkEc2a6ވc:HaE_VZWFddeRNIe8Ո i"J~ fbdfeejfn%t]ť^gzxfe hJqj$uvg>Xh^i@ $ i:֤FiꛜYEJkbykn*ujkkOl>+\[~z^-n+~ n4Ifnqˮ_ o멹wos˯^ p+Z+p?#Þp0oqJLozr* 3&r6T]s-BMtE2>/M+ u*4L_ JuSX-ur~Yvt֒f状L;ax,8۴S.yN%$m(BQ>wꂂ}߸viWv@YEnO @:ļC/0!yAO|o_n&;{.~*Vy xBicRE~ф{Mh:7&iw=1(".PC"/TB+OV+!3%p W37y|98I/m3A/Ln&a5+]UL^ a_Ľ1JFT̐Ka&}aL`D"$^iܸ3̎c1+roUB{i?yPEe8&x#e>Vg̙3!2222111111221111111111111111221111111111111122111111111111111122111111111111111111221111111111112211222222222222222222222222/1-0+/).'.%-$,#x,!o, g+_+V,O,H,A,;-5- // '0 %0!#1"$2#%2$&3%'4&(5(*6*,8,.:.0<13>45@89B<=E@AHDELIJONOSTTXZZ\``aggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~¾ÿH*\ȰÇŋ3j8Ə C ȓ(SQ˗0+zl͛&isI:{ *`IH.YҧIg6*RSZZ3kS`zOfӮDȣ_H3ܻ݋Q/߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μУKNسkνOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4f$-IIAΎ=#I1ѐy$)$.MO8aS8UBd7a`9؄sRϚLpjI7k᧟pʕ{Jqvnq0+ߌ taH)h-\X-dѣB!!,8_22221111112211111111111111112211111111111111112211111111111111221111111111111111221111111111111111112211111111111122112222222222//,,))''$$""~ulc\TMG@:50*&#     !!!$$$'''+++///333888===CCCHHHOOOUUU\\\ccckkkssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~½þÿÿɬ@*\ȰÇ#JHŋ3jȱǏ C\3Pɓ(S\ɲ˗0c$)͛8sɳ̒> JѣCi"]ʴӧPիXjf֯`Ê=hӪ]6b׶pʝ{u*ݻx꽩t߿_+Á #^̸ZŎ#K U ˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μУKNسkνOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*ꨤjꩨꪬ*무j뭸뮼+k&6F+Vkfv+k覫+k,l' 7G,Wlgw ,$l(,0,4l8<@-DmH'L7PG-TWmXg\w`-dmhlp-tmx|߀.n'7G.Wngw砇.褗n騧N;2:#;̮;,ގ$O<órS>㣌>(#3?䯿+_, ̼@/'H Z̠7z GH(L W0 gH8̡wG@ H"HL(,8N̤(3*̊S_Eue_dYW6F1egDYOƑEOL@!!%,8_222211221111111111111122111111111111111122111111111111111111221111111111112211222222222222222222222222222222222222222222233334444556677w89c9:N;;E<<==<===>>=>>>???@@@@@AAABBBCCCDEEEFFGHHIIIKKKLMMOOOQQQSSSVVVYYY\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~r_Q;`)A*\ȰÇ#JHŋ3jȱǃX|Iɓ(S\Re-cʜI͛8!ɳϟ@)ѣH2JӧPJըEԫXjM֯`ÊMYuٳh6d۷[KnPvݻ/߿_ ) "^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μУKNسkνOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*ꨤjꩨꪬ*무j뭸뮼+k&6F+Vkfv+k覫+k,l' 7G,Wlgw ,$l(,0,4l8<@-DmH'L7PG-TWmXg\w`-dmhlp-tmx|߀.n'7G.W?gϭwTz/?ԺG{>C;뾻۾;T3|+#}><˞=7=CG_jΗ=ynG*z߿~'!!2,!;2222111111221111111111111111221111111111111122111111111111111122111111111111111111221111111111112211222222222222222222222222222200,,))&&$t$"g"VH=2*$###&&&+++111666<<sē+ok|vУTysO2ӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔V#*X&i} o[چjʪkZFk݊fJYJl!!6,!*$&'(),. 1"3#5&8(9,;1<5<;<B<I<\;!t:'7+5/302121212121212121111111111111111111111111111111111111111112222222222222222222222222222222222223381=0C/H.M.Qu.Ui.Z]/bQ/hI.mF-qC,sC+vD*xD)zE(|F(~G(H(I(K)M)O*Q+S,V.Y/\1`4d6d6d7d8e9e:fxEw(*@=^`P\lh A$):KP:WHRtjC̈́Jej0ΧQ{ rbEsAW%-IsޮV ]wYS'ΉyٖU"DΠ~M:ҝ!, 222212222222222222222254:7<@BnMDfOD_ODUPEPN;ON1NN'MN"LNNWM_ LV%HK+FI2DF6CE7BD7AD6@C5=C29D-3E&-E&H MQVXZV P%H+B.>,<(:$84200-+)'&&$!'07;=?AHNUXX[` f#l%q'v)z))%  #E%[0f5n9t;y>wDoGjIjIjGkDkCkBjAiAh@h:g4f,e'e"ffea[TOIA><:755447=FGIKLLMQ X-`=dEfIhLhLeLbLcN{gVqrgc}w]]^bekzovsqym|h~hhhhgda][YWVƨUɨT̨S̨T̨X̨\̨_̨bͨfͩgΩiЭkմqٺxۿ}Ƅ̌ҕʺѵְ۪HmЂ30#kO3jHqڴC6Q!C(]RP%K!j =(sɳϟ&GIϣUE*TbP]\90F8ʪ ׯ`3> KVR =~\q΢R%(%EE-˷߃*=4)#ΎӸ l.AQ Z rs$XsbCK|w10S.(OeU!0K{Z*czTi-]e8VͽS_HPVMsy|6ɇƩa^=%LTPȇ~Z9GymXXbFYAa'?ES(2}LݗjX_}&\AAEЀ6JQHյ"(PF\yUwa2䝕2U th7f7B>jdͩxZk^IXeF0xy{ix Ti2eht{بjc~ꩤFpZ+:SLf5,遶fN'ᘩ|dѺAfa|DIB*mEi)^Zg4!;%'IcѲghĜ@ebxHk6Z5nj=WT ˉRYi8,Ҿ377DcA(:fZZlBmXg\w`-dmhlpKTDqms}|w߀.߂nӄ&o9wWngw砇.褗 U~z꫻^p{z{%;B3z{cO~-{~λw%$o!S"F>zG>POq(g=^C A=xP]n E?,v$ G c'']sɗ|k_l7 0'banRpCw"> S"lN"o;^q^Hn , xD.:`1axPF,<`GvT' IrB|$ IXx-yIW* (Jtt?0oDET@?-ob8 11γ@d(h2^H9XNsd)?T^0oL'=GӐ$?c.(2M&>t̞$( Q D(Gx ;˔:3 +Iϼx7>w3> QFC.KFycB$g>KYi40i";JL~sxs ՊRmRqg|7K*JM^R-4_OWvn#Wr00UHMT'ǭHÍ) ɽQCa;3Бml:f3_jS,,^eշJvrHezOYD $)wR_3=uT})ەvn4+> Ԡ *:=*!3sҾk@"O^φl5UK $BR0`!zP/[K8FJV'OH zGyNL \bZ79s rcK4/Ɓ万ɃFӂK5A/#r봋30].8SW֙>π4,2Ϥ"~bZqD\]R4  F`Y=)fAEҧISiH9!D'$4Y eT:T9 f!9Lqd"Ab16qjڤY6h*V:&6> d&fdsoc#ʱqVTm`$\ݡA in.lu>r@bHϺ ,$ qCL7 Ѕ7{n&{F7 QnV]Gn:U*}H>ҷT/MjYV$JۜQ2ߏc./A eWX^~{:t<`mibJ[.Ϋ+eQ}z[(+lQTɎۥq:ЛvY^WP\2p[E]&yǻwƃwF_bY?eպV9[lA.~.}k/7~8xc^iWYƾN3# ON~dӶޝic"t 2PtVuI}ewys/cHa?͵Yx5Qa6ʣ`;bEezx%l5fHV 6tW![%Xe)UXKA4c\$YOKzsY3Xn2tQ5UZ[#tcm>%I`9)=JN`FZ쉘ƥCGO̅]cҵ?aXzU]fL&IuUˊ^;>3FE?)ŠzC_u_Ӯ`8OOV)>``:Xuc5af]QZb"8 5:)Ibc#c Jcu8`cgd#F&dqN?|Ie4$Ysf')Yb6=RIq\l/;=z559ćԓg9P{XZh^3j^Aji9qiȵAk,ldof%&4P3i8"|kw"_Kk&z[ط&oQ1҆p ȸ(ۦ-+n'n~q&vkwy[.Kp'kv~˸ {"7qbq. qr~m+x1*@#~BH*'z2 lq;vً.G%3 +J|e!fw%hwv.E7[p|"wᾏj+Ab*k|1vg۽{[yG.ҽy&i:%ow7i2A{-z(!-+;y{.g}B-l"Aw1 zsť+ŝ{]1L~"&iMtjr-8v|xzEɔ?&b|LB,G:2?|XH N[j󨔪H\y7_,%y˾\׬t(ʸޘ(!- I<fxVHmɸ<Mk(}ْ80S5@m2e,8em֫i7J/kt]v}:!Qoʖ[X},>!; iQ+$4HR= wi81fS鳛 @>կGnƃ}-DV ?[Mi[TyOyQiieYC gXٰVV?Z8jiE>i̹Dsz$;O*JCHG aje;鹞}K %TQ`L TU~A%d9$鰺5~T 4WV2S:MXW߉&T^Jߏ%W$U&;(墙_ݙpD^%dDZD ϯjQĤMA"JYA>;BEC]J@5du^qDJ;?tN*Ip*#/zfU6e{TO&=(>O0Ĩ  ]*B^Eu^@De);F:+`-|7.; \ʾ$Z@ ]:>Y`e5~TYI6Y\^ӳʥ^&YBSuΞ GaXfJGT>[H+ G atݺMFab`4Q=7Lv]YGΥS/_P.˨8`9ZFHO 8 )V{Y;!$XZ)\moMۓ_EloWp`#Dha|J6~Yo~mo6 _bO9noXka>~ 5/\œZ3hv츫I{3l[_zį/<\Aw6݋ׂ#?E uc⯀^u폹ül?F '@ >QD-^ĘQF=~b%4\@]0e2tQ /$OEETRM-4 SU^ŚU֍RJVXef Zmݾ%*\utڼ}+1OE.1O1P>ܨ"upSf\DE<G\Y Q߫v>gwC|m_ U-M?D3ҏN 8G=񶷇~sy]/;}vbXν.#8r?jg"?4K0A0G2RS<$@7<;}sϋ:MeI#4V,O:"jYu3(' TMeSMg]oY]e̼{s? Npe]dmFe;ǰn 2\թs wx^W \bWЀȉXM>=en V=9D.1;6"kVl9eAaE fLթ-]7Y3XcXQ]9i!1X䢎blXhmyNM,eQvgAYce-P1.ab}VnFu~WdUMUlNjGs"kmƒ*LIX3o:ƅ\Ŝ e3n;ch-j::d>d%d4Wvi}5)kdMש?l^ur_ML7^ кR˖w<-U|&a+wE w[)[s6= +x b;Up+q WnXY^g8YhBbD:dXqQNcNdJD Ȉ-QR4J 4@j?XSe44&^)).b$@o,ȫ)j $CLjx)[AX2)!E2ғM)Qɾ-d*GQ%eRe,e9K0.0aҗ .5D"f2Lf6,d29MjVS}&1MnFӖf8)MpSD, sӝS;ϙNzfg>YN}slg=yOds>O= Z]V0z+Pv4*Vɔp]/t-t8ȘI?>3)5}lJE$&J!IC ԣVժ\1R20Q}ZETjWBV.YVծNkSzW5 !Made with ScreenToGif;shinyjs/inst/img/colourpickerscrnshot.png0000644000176200001440000023434613542227616020511 0ustar liggesusersPNG  IHDR:VC+sRGBgAMA a pHYsodIDATx^\Z{ttt{{&M{S"" " "!B BϿಌZ$9ss΅{[n|o|:զl@ M,V&ӻo=dA @(d=۲Žs)8~ںm@ ,mu{}[ܛ[Xo߁8 7r9 A%<\Lt D!d6BWdC~\TC~ȏ!^$C ٳ>?jS69N7npmJX94p:1I Cr`B|,g=0ȏ3JWH% L$Ub&@ *1 A~|P ?JD(ai#hW,+A,!fwlbBn歎.f\ 6r`b K$K[G!?UIED`IFVmñOy7ÅztbL훷` hB3Cl¢1c UbL ?J3x'W1u*1a\%< Ę:A~rSg0Obc*2ƂLx)q#afK /? /? 5e6B6F Ǎġm37E߈P&B"&KeTƱȏ!?'!d=B~| !? #1`^tȏ$GFl/c< NٸѾqúюц=br=:P>cO0"El7n\ >'3H [A'Qyh5Z*~XoE~lҨ1Ah ǒ@~O@~,ޒ 3w>F0\6h236sFs kE 6 g,!`ϟ~|!bP`xlh#1byq.2#^,?bVZb3^Vy,?6J1lxX Y""?-jȏX0D yO\X +D C~ȿo1dž}\s梙D6|` )&Wt%n\rca*/`|40xp AKܼZj!V{z*H1D ˿~rʙ?݋E uXX+ЀOV]XZ|L{ 1{ɘ*6$1& ?IdL$mt@1!ODF ?IdL$mt@1tw}9W9 z 16KN1,FS$C .#wsISOdҴ8D096yh'%FF1.'MFypY$Lƣ`IӧܿOK͓$􏍱-fsB'H%b0Fی=ؼ[fvXdVW̚2}.6c P "`V Dv|P5GxX~,j;. ڈ%Gy?%sLRcJ@4?]"|X ?C~yw}w۹3.6*? ;4tutL]LLrjr6-5p*06%r?eRlհ\6*oAΌHA,OD, l X3dFBdo|8"Sˀ2l C~ȟ8C8 ?9N#O4 y=B; z$lZΣ)n}1&쐘2"#>Üs>)1Ė͊L̩&28ډ/rD$ fX(RߵHT'XX'H,H/ƚ'RciSDž g1ؖHhSaD[ ?!?>{uPh+xF,'Dl$]yRh/=vvvGǖ<=Z.@~#A~1{l~X~r?# hu]#TG Uk^xA^xA,mgGCԠG;$Zb<$4|$m$W16)R'&#h#x1D H$@H0@LF"Gb2?H4`Qg{d1c5_qg|fPK14Vѱx5-=;(F#[Lnk*A{g{dW`2D14]``&kd,`0] c  5L` SЭ|jVȅ])#n"ji&/ |d:E.0mWF6cc0nKE IapoD(6n,]|d}y-iRÔ셌ޮ3nlso8|5aٵduZ#gc#.{֮!0A"2n7APi!7$7lR&DYx;-[Sv-jID`jXJ7آ1Z,fRM5`Ot #kT{ANaۨG&/M8&hѤl&Fa|I iK"]|﫨ΉSv""kÔo".]niٵ \:J9IFJ],%f Shqqvg!yldd507q$$݉x0A# K$~mTIaʥXd\;n"3r=IkoId#.IV ÔKDf)5qA=F nk$y3°$FQ S.% uuqA R'{5DDUKĚP}I *,1?R#JYF) S.!I|A e⏢q{# %GZnPI0Tȥ8>,u]X( ո+eKhTIIjE-M8'IV!T"gM&U&40]F])[BHҖNrW.ji9N*Q?kr420-$w5J$-DtwQKΉxuDUAdY$eI, /`ƇQ}ha-%qWʖ$i&ոZpNī`&B E%;ϚM$)Lbi`|6>C k)]R&IK5-]҄s"^k5BUP-(~h"IYeK صaTZXKIjܕ%4IZ$m$w5&$XjE&GI*X_ZJrW㮔-IRM$iK'q4ᜈW'ZMPT(Jv59HRVv>#wMLj&QiQ}ha-%qWʖ$i&ոZpNī`&B E%;ϚM$)Lbi`|wkCDLzF])[BHҖNrW.ji9N*Q?kr42 ^. }ۈJC k)]R&IK5-]҄s"^k5BUP-(~h"IYeK˾l+t}C k)] KB&KSʖ$Fƒ+-O''GBI*.r)jsV4ᜈW'ZR:{w$#T"gMv m6yiIYe4 c"FUk#'5l ZJrWèct5W#X kҖNrWDjql҄s"^k =h$yڵū\POQ 0Ve]kF|6}~v0rtJ!xc#4ᜈW'Z .|Ӯitm2҄O$ Q 0f2ĮKlTuO bd]#%;"?%nkTю]zj|zQKΉxu0߃-k_ 4UFZFO3b&𯑥/kx X)|0vﮝ w"PiiK'_qtC 5k)IgF%[I*ef(PңE2صTpkKjH҄s"^kKM]٦&D*X_E6xe^ص1)eKhTHҖNrW.ji9N*Q?kr42ZĮ صёtwQKΉxuDUAdY$eI, /kpaB.FA:]1iK'q4ᜈW'ZMPT(Jv59HRVvm$|~h+ՇRwl Mj"I[:] D: j"ZDQD$Ɨ}ޮa5Y>ո+eKhTIIjE-M8'IV!T"gM&U&40]F])[BHҖNrW.ji9N*Q?kr420-$w5J$-DtwQKΉxuDUAdY$eI, /`ƇQ}ha-%qWʖ$i&ոZpNī`&B E%;ϚM$)Lbi`|6>C k)]R&IK5-]҄s"^k5BUP-(~h"IYeK صaTZXKIjܕ%4IZ$m$w5&$XjE&GI*X_ZJrW㮔-IRM$iK'q4ᜈW'ZMPT(Jv59HRVCNMHI 3noxYvIѭi֓{@PL0UMR* ȴd4>UIRې~K4;Q% T^<539&ڷidEkFK)(PS$Ē利\i|N*0iD0O]mI[NM`RnLʀ9vԨ($% TG%FC)' 'H$.V,CB)6eFd|(-"ݖh)2%-5Z,ğ0Adm}?8f#$If&.a9z HܞXh&y.coOF&ri^w;˰KH^L}ͱ:]X j(2n2Y.`$QI;uVc,[O"Y2$6.Axg+XLbsdg%khtucE({G( `Hb⻌6͎D)D'%"6Dkj3r no-O[|Ԡ2$6>Idt䉌>²$M9a:v.j\)')Ҕ6Sn=IkuFMNk5tR荛u;˜>,Fr(2n2Y.`$QIޤqYH}FP7ݒtB?;6k*6)ãi%&bHz wq\! 3)/ ivD w&%A&ɧMFˆD`ےL[Ny2d eDs;:]GˤR7G%L'E(iJD{`ׄMN۽}vΝ;&}v ґ AbG ӅQH9A  ,Ď7PH oXyFG|P-D]gmB1 *ɗhIyk/5ƤhtuDKhbhXB|퉝ƂRb iv|r 'TU.Ħ0GiH74O~QHdŶRφB,`gfGw{>Ǒ09Ll-'D[4%)s$صf9v؁l2*Fܝ)l5vc+Ɠ ooYfj~J 0L<>NΝH|[#4#OCbLl㦣QⲤB f|{nqbGh\z$g%Jt2V #zDUA+XljL,%9NǦ` 4;0Gqm?AhX1l-0l6]P a$!KT #BL|dwx*lt> O2z~)'؞T%Ik6^e66mrymݞQڵWIbw)9Kq9'f2c1jUJPAHh"|&eCq4$5nK QP K+@$[Q,13"IYt6]]|!0(Q54~t"(h:ܰD? MPc)It)jՎWbImr+$"1@ha CV JNy8PD Tj 2]\@| 솷Lf2o ;d=Ik Ok&ˮQ-a2ƛq85{ kL]#!Q-D?F..19ч%ü P Db4aq=I_Yj}CEjBDO%U$q EPgw3)/FcP(ŗHFL7F.K)"` HzS^q1E@.Q/doHI4EVlCʲ8:X)u5&,z\ybiTrq4I2î%{$B$(^_Cd "Bg!cu*}eH6_LJM!] P!ħSHmt-c$! wC*ɩő0aDf S]8q/wDP/Yĥ#HCOQ.➥Eɤ4o/M%]mOzJd d۵[%zq7qYC| a_|=8R܉b[4oN(QÆkђHn-4)ICF] 6STIvIG|mqgJ OL<\cI%Rk%2[0:]]>&wD$( 扫* b%Z@n%cIS'.,"DbD4M(/M!m԰a2Kg n0 qRoB;OkhM^?Q6ėI c$ (a!D-K$B#]L~Ԋ 8 A,DL(/G@b%9kV*(kÅ% RB'˫_C#ljWKqyJ2^~Rx^ICJeA0HB\JSI9J{eg aH[B?4A9R&"Ʊ[6j ě9iH@ KR|G\TIO 819I-䚑 b3e$>0! _$ UR$5FY.l&O$_7/ꥀ/}).~|8 Ԛvb0¸)5(kÅ 1cWW:ԙӷ7lf|q50L]#oM;B=LlbG_\'XSAj2m.#,pP:>0V'%ݧzHH zJȺ%7F{v"G")>Bꅸ)%paqcu=䫉xMwyUG#{_+$]?qWYzERG#SPJ-D!R꤄R J%h|%4~80߮jO En8bwR.ɘ%KiE#H"մ1~[KQ7"&xbOO.D4_$ HAdL(% KDkr"H돚*B\ I[)H`d5xVvj)NXB|q1f&dL.Ʌ`|lp2 Wȝ X]q6.]No8.\&vR$,EIC'tA0P_H-hWjiTàva\'KؓH"H r %2⊤~(DB?XD&4漈X4aXq~/M!ufb6퓖>3B$N1mmd]&c5}pkv `/'=0kv р]hd4`2k 5fZ8j*v vC7ț>t:@h @ztg}@a(m!7{ ME0v }`Ur嬽 t6*@Ab#m!7{ k2#>Xw7B^΅u9A nC[&@zF? -{5*pM]j!ϽHw @~h  ` -7(!7L]STW˿ z$oE`1Ϙ_NIP =RewC9 r3@0dxb[ ':ABnWdsax5h7 t6*O ڨ! jk̚6r3@0QtghL}Ik|k nn`F![4٢'a O,Y۵[K -7 Z|›QfC~-#7變]9n=صQB~b6H#fװ;Pwk`:#(v-r_%b}k >'kcĈvm,+F]|!7{ E+ A k)s6O`bh ?%7{ C%f҈ݵx@#ص@zAnJԮ>-]1ABnWs6Oa!C+F1~#'wyÌrʞcY X8<G WD"r⭤-d>sҋ Ch a2ή5ʱa%ŷk1@*FhtPLfJeגۗQ.z@?rco:Dh P(lײ/#[ -W[CΣqod^X~iD[TrDNR?vb~@]•hsk$|df`pЀf766zϷsN `нG6y&%lN[Q+6K3L 'K_љTv-4F% D=`׀ɢb VWWՅ҉]:Dhbt:r3VFڴ#ky 7;צ5w_xGqb!Flh5,#7#3X%a<*^WL slVKXt&nw(>Fz4 #kh5966{obl5f-]Bf¢[j6#+ѮQ Y]Ì`ۧX)6B%8 8 =`׀_[[CaAa(X$\.v2{{DJ%ծQ?< .}֓Kov@P" 1-")7r$q$%XW^B DT v ͠}l6z$H@hBpp%!>Ƅ5ܛŁa_#m V߅Ukn@A[fGCd:ǘXFMAِ]˺ٵsA2rp%L2A#yi^BO)z- V]]iF (JNΝ;Q*2)KL]Z ҦFkяs$S?^uIJe^#ث4*Ӗ`8@ED?5`Z[[I5J ݱcJE&}kG4 ܧa[w\>9(qR*! JxJ։ z27Λ7﮻kfݺu]]]%hcyyyeeH$BG.jMM3!vhHjȨ!_&dײo<uam.(a zFuiT%؄Ikf͜9G}F0bz뭲迯6ZF^.`ah4&ܮN-ɫ!ZZZbv &>ɏvʧ>s)Ee^(-ٴұ%؄Ike޼yȫ%Ȯ!E1Aص.1Kފ*kHՐMFpHqixNTk/I5!JxP[ķ%[M6Z.^m̌]kllv\ہ} شZ-y+]#0^mΝȮB҈5qb')! Jxb-L8$4ڨ_J$v>6vi82jP(f#4~jB]e^#R5m1F D {oQ? / _~ՀN777n߾`cӦMЉkWCj`b+3%FH gچwlTF(|F%g UkK./DG;v >G}@ p8::: o}kh "Fx5䗷m&7W̫[w-{E~̯^<^˦W"%L2A)_E$^Y WG: \´ecz6d_T߽H[!&F rlyk^/L #ʄ۵֢^ Yf$ۭhMH  Q*D}1IMWxA+^_bqT*EL&㴴?O?#л3A[>qX,H 6b:::QCo躅&gA +FgpZW#?=@B*еt]3Aq!q!=tϢZӍ?n2LG}k7kqv-~?!t%!頻bv y5\]]ۋ$d:ǘ( ^jj>kohhp ;4 ?C?ЀgP~C4?Puwg_пCv CaPchfhzhgPu( ɇCAPP2O?C@P7;fh{W *|!_Ő|h{ECނ!oжܡm뇶ey yyVW m]2\~r6嗡-? mY8aݐ_mrhCφ9>8d?d`hӜMmzw!C_Ɨ/Y>7dyf婡'z}tzf ;d{tא!Cۆ u4}PCk rK /_09}stgҝ>=uH{ʐ:8vHs!C 2~!CiC2m6l _m[D"6˟\.vh;>5Kvjj^k7880v1>m o`ߖ̓}7 q_`w0365s0 u ``u4@\A?8>zp;sp;cK޲m%ۊz6 z9kܺjеbеlеtp-5c۠?nqp:5h_0h|pӧ>Ѡmmޠm77A[7Z^yAE  j8{5jNԜ4~`T9>bPuؠAm?6mP9ukG]]CR~F\Nĥ5x=t[r):4{lh$ZxhLӸh#5«!Z۾}{Ԯ ;пs3}}uu-a@x΍;-;{B恐i =4 A?ځ4r !!!Kh' |܁/{21<O逧d]4.poؚ75w3pزf`-+KK6=8~p:eӀ}M lf`W/l_ >Ə6~8`7``:gހo>ڀ/ 0?;3{穁'L0=2`|h@05`s0s북[n8~@@猁Ϋ:]1l@wɀt;q͙Oh?e P9:bCP8@9munN"v ]_؈K 3k {&FAL*r8t:   BvM&utt`m$S>Ʉ۵t_m۶kS _Oxkvt܄)?d{::U;Z~s'5 o{9ޚmۘ<~].wKo-ߺߕZ߿%KVUo^ҿyqcQ~c7}M_۾}o'?au^~~{w-ozkW/_ygMO7=o|H77o;foگ;]ݯ_{E~%w\1_s~~g~Z\'NW߯:#ێW֯<_ypNWLcn/؈K ѠNw:ȍzdj5{h$ZB( -fW"TlF`"Z,/o綾[B[pm ƾ,} oGgmMϯ+|}>oy}<>OMf܌}>WiUԷoK>ܾ-9}ά>>皾ͫ6ۼϱϱw>}6ڷM?پ}۷뾍_YY?~gQe~_}sz3g~V_}=gzb>}gu?d_} z>}}{wuyG_}[tnЧSnj:\ѧOsI_}OSߧ>O}v>}Nk;>}zd_})k9ei}}]dU[]CD@/ nvt\!DK(qk4ٮj0!4՚&Z}"; ¡жpn ]6pX;coa.ӆ}Oގ*^y& ok {aSvׅݼZooe2[+.ZURRRRvn;欰cmر&X W›7޴(l3l=l-Ɵ [[ [ [ [{~$l(l0ly/lz'lz;lz3l|=l|-l|5rp asa3apS'];w k kkow%qSXsCXs]XsmpU+Kq]VO n;#vZXyJXyrXybpqcŠŠ#Ê#-[ O ˦qv؅5t= ]'j!~l[wpسAw1Q[P(n6&D<5'g֭]v }q[CW( pvC;l!5 !) vm򶇼жжжG4|,hPC!!ݬސPB[BCC7گ _R_R_R_R]R]R]j(vAPY3B''Zj9&$?*$?"$?<$;,$;$$;8|`yPtjk3.ܮ]ԟv ]?{7o2vaעqIv\] \` ;\[;6Sп1}栯'nn zA.nڂeУzA,ݒ[t7 ֺ6]5--2Ҡ8( : A{^о>h n nZ Vm+7. n\9cwa}mu`ς`AgA'AGAA``w7]^ vz1B٠~vPt`ǂGY{; jjf5o l1>6T]T]T]l(?.(?&(;*(;"(;<|h`AAA` np 6jϮ5] @>.c{`Ƕo ]3m-956} x:[pܭVy`,9)UpKl l 8''d6=8Ҁ8(0iC`S~lف֕늀eY4`Y]3G[Ks@@w7WgO? tt t   tz3z@j@J@r@g'G: t<h'~w΀zf@}{@}k@uK@us@uc@۵Z/(. (.(h9'rV@~f@~z@~j@~J@~r@~b@v|@v\@vL@CC҃M4M Hpؕʮ'[l!߇L߷sp9^k{mmV61=F;nkkj~jd~ԿɿE";~oo7sw*&SSV77noo[~k߲oY]]]7//_~~~~~ݟ  >ww|______c)Ǔ~~c~ͣgUw6vVf&:Zrj+K-[[NN7o>|_z_z_z(CiƩ~ܮ4vv ]ԟv ]95y^nk$5v4m|->f6o&߶>yz|ns|[:Vϥ>WVŷEsJ|FY,mkϚ,Y>:__*yϼg^YYY3333333.u׽g@g#_|~O=_绾η}7}7||W|ڗ|}/:uo=^^]^۽y[o*n*n*n\mm++++++|y<\l,oәަӽMz%'{%'y%'x:+>+>+>x`oA^с^^4oT/n>ptU$5t]q߮0D]KkQq{<[=-fVgݳqY=.el18|li"o`ϵXYXdo[doYdoX_4ji~"}"}"}Kl) L,G,-,,-Y$"p;[-›-›,,-,-WY꯴/////[ηԝg;;;;R{TKIα1і#-5[jj9Rs}= ST n.k0,o=fc4&i6Qc6Ff6[rsl Alj4w5f}Y7yZs'Ycֱ:YWe1̺Jf֖efmQd(0k65yfM=ܞmn2ךիͪUfJjY̬ZjV-66enӬݬͬ'sB{;[s/- /OfIYtY4psffffmf-7o0_g\?̿̿̿\wRs%fEfޅftss͵瘹gg999'kN4ל`9\ssQfffaC20abN5vk2vd4MFɨ7uLZSwn2M6Ai2 -.%5%&}#SYoM:I5i9&mI[m`:L SA3u4e&MISlj/27y&uIޤ6֙TkMmkLmLm+p-3-5)LZ7)~3)~5)~6hjYhj$$+lIIII#Sy&&}S{wLMo$o$o$įzySsgLO24735T}uuuyyyS4\SM]8v]a|f6 .cwѠ5:KmRƮVc%7eFԨo2vNQ'4:Q[gc2v0UƎJfT5Rc{Ȩ.4 |*ϨZoT۲mmkFJrQܨ\jT.1.6.2eTaTnl'G|QQQQQQ(LҏF&9Ʀww7׍׌_66hl|Yi)cƆǍ a<`2 3kXcL#6#V#fcMƺuyyyk2^iȽȽ"##|\9gk2֜i9>>>X}cqFֱF1FQFFFaƪCU2V`1Ո۵c5ɷk.Ao4ti zAnЫ mNb: :A'1Ƞm0hzC3hj ASchgYv^ihuA]jP*4m0 e6u5ՆU2\K ņE -dd?d?04gh+tA9O M>2H>4H$s b w 64iUe%EC  § ' ' G 2?ho߇.NC [qlP{zZw{ssssssBC s g0Tn`f`b`d`h```g`k`c`e:Pu0` CiS ]g2vMߩZ}FSjZ:^עfV;"A5voF֫Yz5SfUzMзJm%ze^YWnз["KXW+V-+-zoL?05oE/Y/I/]~[}M_%_%aoo@8G/BzO/zG/z[/zK/zCW—ggO???????O_wwwwvv=V==&=F==:=Z=gsJ}KKꫧ׳ӳѳ333OuyD} cp}@[{{{{sssvmmښ[57kknҲoвײVV_J˺R˺\˺L˼T˼X˼H˼P˜e:W[u,-L- -4mS'i'hkiihiGkiGiiGhia8D[qӴi˦jы2v]|ihԚv]Qj ZQ7jҨĸD6Mi(4JFYihZk4՚ViehMдkZJ5-%yF^hdYFi4gk4k5ͫ1IWj5e"OwWgGMӈa M'|pF0W#WS- M u 5M+5u/ix/hxkxixhx55Ojj}T}X}HyPù_ÙOSsnM];45355[57Qú׵500/0/T]XSuq1]8OSylMYiکI qc4Gk*Ҕ)? S!4ejJДNӔ)A/5ɷkjZݦV)*E&W5ۤ&uXlT+EjP*PխujEZU+8ZTT[ZNS+2T-+QˊͅusZ檥9jiZU7Q7R7TKV%Ԓjbou_?ՍW7nEZZP;u÷jjWjjjjgj'jjGy9jjwuoTP^S^U׾}I]yusgjjSjjjcG5kRPWgwTWߡfݦfݢfެfޤfޠ^]uju+Ռ+ԌԌKՕ+/RW^_8U]q$u ǪˎQ.;R]z0uCԥKT..O]>>VqVqTq>q>q>̗| +cϑ YWeWdeedegegd2S'eUOȪ11TYd*fhh*nU$+QV~:YeeWʮ]!+LVz d%J./+9OVrlYY3dEHɊN"$+&?"?,?$? /ϒV%CZ1SZ~VLe7Kn -^ZvtiҒ+q].-LZ|biE ӥEKΕ#-<[Zx i҂ӤH N$-8Ax-?J4piaҼCyK(=@;MtT)zNL]%FX$ %Ic/iIk%\W%i40$J\",K$bH"(oKs%| ?[_'ᯕHVZ!-IxK$%p)W  ' G g{Iͷo$5_KjH_H؟K?T"XPš/a͓JXs$%$w$̷%UoIސT.a&a*a,a$a(a",}XXaY{q-,KX|hvam[7c*QXp:a‚ WR0rC7 m4ioض,3O?MT9H' sNf'>V}0(\Gfiu (\p4k ы8wv g횠^T_' 깂zFU J&Ux^W" j n'prl'KY'pV jVZ.`/ K  T!]P3&B{;[Aׂ/110>T~*DPC\9h h h*T)xCPUA+/ _=/({NPtiAS'p=&(yTPaA +(GPtNL3 o"(YPpFA 6\+0C *A1 /$=.h/,A9 rN,>I} AqcYu`ubZ{`A /X3Mf?"1e3v_Gqu5:6cyL>4>-sK>kr559|v6^gW++%|b>o>k;+U?~3_+W.W~Χʧ}§}̧}ħb.}~{w旿/_:5~+/K_>/Az_ i~S'O?/z_0!~E /_p'no0Ͽw-kWs^Ͻ{?o}&? ~YN;D;ڣp_s8͡5W_}WOޏj*NL]j9^m5.&[2xJT8弚R^M WSī)xjl^uzz-z5Zc.õWW7jO^y_y_xy?*W 0h_h*>U|«WC^<^򹼲ye啾+} yJ^啼+yW"^s= ^x <+xWp?`>ކ{yƔ'/^L^[1˻w#/^u୿*+y\.a&gݙug֝[t oɼ'֞[{-^;]``x&߮qj8H5՜ W%Miv W UaasXyf.afs8U8UkpT0Vp9%Ŝʿ9CCCCCCSS=o9pʿµS眲8er>})S:S:S28zS& N뜢W1)|S8r <$g s6$*8:ќGqVYygarVY~0g,YgTz2v]|Ʈf#U3UJ\46*g\Elf!Yfn`W屫rUٌ6#XǮ\ˮ\î\ͮ\Ů\ɮ\Φ/cӗKشqŦɦή q}.]-vW/٥ إ_K?g|.GsEsEﳋc.zS7؅ ^c%veox?4;Ivy;Avg^{wιs;;6v[7obgξu;Zkp]^{%{쵗^bجd6֝wذlYgW^u:{i앧W^y{'W^q,{1G^~${e^v{ebZ?{4Kыx  5d,& W9UUʪ*a1Y"by\Ve&zE_â!bVh+X,2VRVbV߬EX+VϬX Y?Jg~*U +Vɗ/Xş?c*Sчpa*|U.mV[7Y`mx5VY/_d +o6+iVS'Xrc>Zkìr`ʙʹsXw`ede݆VͬXndzkYkg\Zs5kU5WຌRKX/f֪UVZu.k٬gVZqk:$YO`-?XֲcXˎf-;ᬥZzk%bZ?k4XЋx  5fYEgVјU̪2&(a2EBfe2YǬe3٘h똴L&m5I[XάXƬX,_,_,_,Y'f̲ߘe0Kf,YY=o%0Kf,^,Y93fѧ̢OE3>bgc|,,,x; o37&3ufkW0_f{<39fgO3#=\s1?y3Afٳ2af̺u'3ۙnc溛nbzLke\s5+`2K.aB 3W\y.g3W\q&s1\~ s'1\vsq̥2\z4s鑸g.9PCf.>1{*'ML]cT2*i Fe9QYʠ3E z!Vm`\m=èfTd1*12W3W1W2W0ʗ3ʖ1ʖ03Jf.b(o_%0J~f(QQ=;FѷoE_a*\(Q93FO3 >Ĵac92a{2r_a}"c 1?y3'93cd?~Y3f1cnƺkdv&c팵bZs3cM572VX}=cu2V_Xu5cUUW2V^RK+/fBƊ阖X~.c9g3X~ce1Xz cɌ'2 Xrcɱ%0X|$\1>E3Mc,ڏTz2v]|FёhtZVJiB\Ɣ!=>==z\zޥC}}z9/s^@~,=zlz'YHӳ{u?},k說.\w̤6[oF\W]G_u-} k+u}W\J_~ }ї]@_6|Υ/;l3KϠ/94S苑N/>鋏} 苎/:pAuNϩt"N2v]|F!U*Ji%bZEW>,VK+[O+ˡea*]K+]C+]M+YE+YI+Yk)d x1oZ"Z_?iEӊ~J+V3'ZᏴp}G+V kچh`-SZ'i>Ô;;>-=Zoz-uZkWi9/c~-yZsgiYq=Ez ںi}C>@[{?m,ښhk.;iI[};mmU`Zym却7V^O[ym嵴3h+-J+h/-Rڲq]H[zmtiKϣ-=Ӓ{XI.$ IB쫐BB !R$ハ Epx,}z4AX(\XyGKKcrƲ,|҇[KKKKkK+_\zay~ynyZzwr݉wǗǖGGK}KK{Fw/ۗF-ٶ.ٶ,6/ݴ6kmiKoS)K%kҒ%qb,1K襑ȥ%sP`0g"0OYՏ^'?.Ώ/5,|_5  U  +>/|,[0 /\/Z{0V0V0|a,a,oӅO><^p=Zp..r\  -΂ւƂ» . ggFOc GF,^Z\Xx^{;;[[,D%ca$}a$ma$ua$ea$ya$i`_0- . , G/ G- G. G,vha0 z6oN7'yS¼)~7o7̛QycPPά5 `V׵9bvfnǹf~Os3fff\s3?1}ѹms?M[s?s?a)ܔnnR;7?7웛TM>)>ܧOιs>}l2ycxx؛ڹ깱s*>Ϲ\dU,x_4¹sϽϟs>s9ν{ r={3.{`qqo~w~g~{~k~C0zmn*<7zinœ۳so̽=NYs#МeȾs#{̻;;9ֹ-sÛ7 g g g̙@1$sƸع9CԜ!r1gڵú`06,ӏ?MOS?M|8c?~5S0혝iFf0N NfSCS)nvR;fS'' g'd;fgf[g[fǛgǛfgfg?P7vC5uU̺g]e׳Y׫%g߿u:_: @;'dzGYYGά#{`~~o~g~{~kv볶k+˳Ko/̾=?ܬ81k9>k96k9:k92k93=63af53~f~pLgl̔efjdf<39<3id440ip~̄nfB;3?33{A̸bf\>3=3.k6uĊM3g>4̸g\of\z}q8fg3W3Βw3^μ+yb]̻3ٌ#oNݟݛݝݙ1::zizqzar~rnrvrfrzfə33c333f =c5c9c1c>c6c:c2cN0>=56=az5=~z9=nz1=idvue 4=14qxzz\5=;=SLO 5sCǴ}:jMκigfY=~W9b]wߕN;^M;Jii{ᴽ`ڞ?=JM>mmӶӶoL?ۻoL[oO[oM[oN[nL[O[M[N[. F.M\G ̧ͧON>>=|lziiӡiiӁiiӾiii]C;C[ ĦiC 1=>=6=:=2O'M i}@@@.jZ§ja0 z6MMN&?NMS\9OMNMئ&N}N}L}h8<45n7LNtScک}@=(\ rɦ\]Sۧ޷M9[-S)gӔq0~ݛwuSjL9US){Ŕ|^6e=e/--}95Z45bjpV0e{>e{6x: x46wpʚ3e͞<ܟܛܝܙܞ55rsjkS#WW̗̗/N _>?5|nj))ө) p|x:N '02; ; ۧM n2<4ϚgN3SiSS)SSISS)]@;QSAPj`0gIOc59pɏɏo'?Z'-#qqrlhr09689M~N~tMԓ.դwҥtLWLO|/|)pvL:Z'5Ok GN:'Ubr-}59Z2i+M^L 'moO͟|lҚ7i}:i}2i}O|0cb|&Ƭcća`040p'\@;xOMWO8U r3TL8AĻΉw'm G˄y4ao7L'o&F&FkAhՄrV1a+M^OJ'޾x[2xrZ4a}1a-LXOX',&,y'#&Fr'FNs&{w&oO ߚ91|cbڄʄ҄„ى3C'NM 000<:1xdbࡉ&'&{'{&'&vN N lmmeMh3' m*HOqM&Z5'ֳ~X0 Y=_Ɖcǜ;X]qY~x 7׏;q;5ߩߩ)AϸC1;q{׸s1no666m7㶺okV[9n[ƭǭW㖒qK帥hbR8>R0>||$lܜ7n~:n~2n~;>p|8g|8{|qӽqqӝqqqqqqCWƇ.]8>tap~pnpvpfpZ0xr|ĸظ84>p7>W=%nn[ƵL1ޟ6I$8?'PnjAԸ:B a]`0 fl|]0F|p}x?pFmvesYޏƱCcNØsp̩{70N7N;f]ߘC=P9z1GϘC1fٻ첱ѮαюѶ1[˘y4fk5{fm{[-VY+,/F 1s`ӱ'px8f3=njw111ͱcCc+ccKcc cύ <36xzlԘĘؘcttttt{t{ƴǴƴ;Ǵ;ƴǴo<4d1MX_*HK c1uSG TcAoP׬u `0ճuEw޿sQru9.q9ͮwîw&;ݐnл.e׺.es.5J(]=Qvde-k\zԺ,5.KRTF*\#宑2kHe.q]/]EBp2=y.H9u;mDӦ*M|K8*oηη2itZ;vimuZZfiitZ#o#uNs-UNs\.w9_;Kïiz49M/Bi|4;9Sc#ur@9x9x9x9x9x9x˩p;9:8.;. tSwF=ԞrjO:'c#CNfSٷٷٷٷٷSTos-N&r2 *ݩJs:{SNeST&8NeSqDHgO@ڏu `0ճuawQ氿uح1:5;F&Ǩ1:A0o}@xrX{V(.1#anvA\0q 9k5jpT0 ek(q ;^:C/CÐ0`MvST * n,ڇ^هJCvKnxa7 g >>Įl?sv}]mx`og nuM]{ݮf^kصvipʮ9iלv~ϮkWnnn+ؕMve]iWf{t{O'$IvE]`qvy]cGQH{w uo5 `V5[j{k5۬&h٬0h ,:Ymm6l#mf&6s7]NpmfjZm4ڌ 6c=xc3ٌPm6Tilנfxe, _l/l6}MܦϷ < 䁧'6#.צ{ht6g޵i۶[k6Msɦh\ԧmS6I@u̦:jSmlmlml{m=6nrMӦ!nf6z6Y6EMai6yMm݉ o뎳ud16YMeEdpPa]`0 fl|]Zej1[-Vj1ZG#ȠuDfլfg5*puX zr趚dVSi5uXVcj5fPu:`5[ o:j V[+:XfտKAU_lx /ցUo=򬺧UȪ͵jZ9lkk}kܱjn[־־־־k־־+VehU_[U笪VUuJ{{*XCVAUڳ*vZ;V6|UlʳD;ڝnNvZe)VYUd%kW+k튱vE[.ΰfa0 z6YF,Ĉ22l1YF!Y~˰2gV[USŤzb[b;-2Z-C-fPh14X N0Xk,J¢/-@eآ{iYt/,BܢͷhǢmQwZ;,6|Eҽҽҝ2-YEfZR,]ɖ$KW"Ht[:cA3e鈴tDpPou `0ճuQm6^Am2@#TnӠ4e4ݤo3[M@3h4 4zIWg՚t5&]@[eV&mI[f ^SISdҼ0i A﹩/ԗg{*P?1\IcReTLIu{{{{\7)+˦K yIq֤8cRO'qI~}}}4dM}&^ԵԵ0um7um3un5un1unLYLSG#:RL ԞhjO0ǛLm mj2FZ#@Ika]`0 fl|]3!qh87 tF hPU^4Fܨ6eF}Qiwv@q8bh6@Q`uo:PkFm_a/7_5QSb5/}EƾƾBc_QyFQȨ5U9lcc}c=c]cmT2*o7ƞk2dT\4*.獊sFYQ~(?e4OeFc~صصصعع0vn7vn3vl5vl1vlYLc{=؞flO5ےA-ؖ`l7[cA5el4DpPú`0f4zaPg z 3ʠ5 ( =@a :Aeuݠm3h[ l6 zCPg45MASeT * }冾2CkC_A uA *4 Лg}j}b},P>2(s ʇeA-y`ogkcmP  Aq  KECCyp}} ;m' ギc#ÆC΃ssscmeiahnhڷ76ڲ m ЖnhM3ZS ВhhI0Z -Cs9ih4]?k kz^k@*(NnVNC߮o}^Ӥ45 zM=xj}ՠJԫ+rL~-PUXz)-{ |L+O==@硾'G+z=^~G/7k+^vI/]e]g]g]]]''GG^}}n}.}N}]߶M߶UߺEߺYߺ d[3-t}KHշ蛓ID}s7bM1h}S1Ro 7酺nX0 Y=_t$Z_}@Ӫt^V ]\߭4]:M'iu6]_E t}:uN]u:uNUu*Rzk]oNYS/ANBS)u=:3"Ox uG:y.xٺNv['7t뺮k+<8<88 N:N:Nڏڏ#úC`uuuu7إk٩k١kٮkꚷ77,]s)CהkJ]c1IטkL8]C!FkG#t0ԵnX0 Y=_״$ZFJ߫Wj{k5ZLuj:@MתU-ZuVݤU7j ZQUѪ괪ZF[ moVYUZ+AOXRSy!PjZs"_x灧ZVH۝ jsVvO+nk[ڮڮڮڮkΫ㢶ザ㼶㜶㬠혶툶دmݧmݫmݣm vi[vj[vh[ki-Mڦ,mS)kҴD1EۘmL6&j@!NmGk@>B[}u `0ճuMCҧѨ5(5}=>OQwFݥQw TUFզQjT-Uh6jz4N(k@JS2FQ ^i%EFR#/_B@\ӝi4FX#{jjr@麧麫鼣鼭nj:oh:k:i:j:˚Kࢦ 8i;i;i%NhZkZiZ ZhZkZiZjZh}`iiiiiqqqq3ؤi4dj2@!MSO'k@>kijhDkD "5upM]}ݰa0 z6ITjuZTzBUjLKt{;սvMlU+[fФiT4{uOZQVԀjJT+@Z^VK+uwXR +R^ejYxe]yꮧ'GN"WPݙtu^u#Gݸ[ݸ T7P7lW7lS7l[Y S]~~RoRouI Q]WũkXum6Z]%TDk5ajknX0 Y=_T$*RQ*\ۭ ]*eJ١RmVUO hV4zU^xTZQɫU*R%Pu2UkPRJTb%(R^d\ՕzTOUOT#UG!Qud:;۪[몶kV⪪2jjj9j9ΪZΨZN OOOc#ప鐪頪دjܧjܫjvvv w귫귩귪lV٤z2Uo2Tu骺4U]*HQ%@6AUSƂUM& Dj"T50Ե?Z7k kJRTʕ=@JERѮT)E)oVʛ@Rޠ+7:ewF]UJYRVʕ]eʮנTJU*Vvt);_Beg㹲#WYGY[YKf'ء|]fnnn3ؤRf*k3 MY!R5ʚ$eM:AYSV*c@:JPPV+”Pa]`0 fl|]SnBwN+ݭEݬnRPQ]DT+ P,StVtWPx(P* 6♢-V>R*Z*Zs@徢h#hhh n(+)*ˊKƋ<8h8h8h8 N)N*N( )ꏂ#ÊC7Aś7o)=`v'ءݮݦݪ6+j6)j5 CQ&թJRT%*U NQъ(AE"BQS@];u `0ճuMN-.yw'w6erY\(j7:yWwV*yg%w;A㕼D^ ^ۋ/m\ޖ/o}&oOO䭏#yk!ȑd{;඼閼&!o.o&o$K ༼᜼ᬼ 8-?%? N 9*sD08$;(;k=`vvvf*",$ΒWg yuHWʫRUɂ$ye2A^䕱AE" D+"09Եúa]`0 fl|]td2YɺZA4:e zYYGuګeUR^!k/eײRJVe/eEPZ kye-d-y੬剠ȕ5?5lYY}Y=Y#qWxGx[xKpSp\5\5\Wd e%YEYp^Yٛ3)YIY p\Vw de5^YYnY.SVlUmUm[dU&YU*SVeiTYeHU$*A<ce1hYYEeea2ku `0ճuhhhM퍠tUwUζrPT򪳥l)l~ ; :gΦMOΦGDngACvgÃΆ^gΆ;vgFgukov.wYG\쬻Yw=Y{=Y{=Ys 9YsXP} 8Y_PjogjWgNA흕-ΊΊLAyFgyzgyH,OɝIe ,u|;_Gu,%":K;K:M5 `V׵v64փ7ujPRR[ڛͥU{sI{S1xT^77Y{c^{I{G a{}n^ksis-Az{5A+ڋB{sl{pT{IpX{#p{ա@{}`o{`W{N|;^| ^IP^^_S@r׉ 44Ķ^Ej "_C]{nX0 Y=_HZZښZFZԵԂ*P\\ښ_5mM@I[Sq[KP5m m @^[SAm@n[ö7DNۛl7uwmun7j^Wjm5j. m5ڪ϶U۪OU'ڪcmUG۪*U**U{*wmme[液MYm3^gi uJ[i2Hj+Ml+Mo{b^Ŵn+!J"AD[Ix[IX5Ӻa]`0 fl|]k!inii47474׃7-u-MDmKS niji-堬5(mixP[^ Z_– Y"S㖺G !iZjw[j[jn-57Zjk-WRKŖ |K9Aٖ3tK婖ʓDK XKQppK!pRm)Rj)z;zk-`sK&R 2Z^J-R%-%I $$ĵĶ1- 8eoyuMnX0 Y=_ךHMo@]ScT55T65T򦆲zuS})xT_(nz5y4=Mu@^SӦ'qS#T&dM56UoMU7kjSpTq<8Tqi8-(?T~h*?.(;Tvi*; 5>z?ztOS]`gS6ՖW%J@fSIFSI:Hk*Im*&RARSqbK"e|82D7EȦ" Z1յbx.5ijwa!x{ skg&^C<;|7vhdZ#ICccMcCmlW7W PX_&xMiWMqc񲱮h+l+k< xX6<T4VgƪNcmpꦠFcupJcepbcp\c9qLcip$8Xvk,; 4> 5>4K=v5 v4.(Xli, 65d 33AZcqjK"e2Hj|27ŁƢ" D6/5k]#"c1}XgO ɼ='X'NNf,'X'_L B6ՓSAU}]%++JkKkKAMQ} PX_S W灧I}G *Ww+oW+nˉkWpb}م\}ęק_'KcGC`}%{];`[}VfeȬ@*H/JA$տH_ā˜h" "@x}AX=Եuú֏Qpu2TdN1Pc: ǘ&l|]#VJPQWSj^ՔWu5%b𲮺.uUg )xRW<*l>֕oՕ7ʮkueWחźJuٺ3t]驺WɺW'qAɱH]ap䠠@]~x/SW[rW˝`h{]6h \WI"E&Ȩ{.(L+L)u $$8[WSW-xU<D:k/ JX?FN1Pc: X'CuN4cLuJP] *jAYMkPZS T5DQM PXSYTTj*SAȭ)XS#(ˮ){{5ew׷-p^Sz \).׼. 5΃s5֔gjJNS5%'kxM1pyy!p) j^;k^k^l[k 5@Ȭ)̨) k @jMAJs"yH 5q &?&?DG Ega5Pֵ~Rc: X'CuN4c i84 dZ5IUeuuU)xU]Yʢ EuE!(x+Uy)xR]<.r@v>W.#(]]z ܬ.Q]z\~E\W_]\..TK πŧxch#puq.:W[b]b)(Q]l[  @&Ȩ~NW?OS@r|":? U?1ϢATHA^Du^8vgݰc4c i8:pu2TdN1!_*I*@yeEx]YQ ^UVr%(,!(+,++3W)xR1xT:<,%r@vepWwmpYYr\,V_%pʗʗgip$8QYt|q* }{UY,U> ͂MY 2?W g $V>K̋q V4i4| "* ,Kum%TdN1Pc: X'Cu1M&VNR^We%.*.A~y3>)E<.䂇 $<(/;ŷˋo^ .]ys/΂3/NSdy!qxy1p./8{*S<;&xl)l*2tV RO˟&DP4ĕ?1 D?<(ʡX7k+a: X'CuN4c i8:pi2A׵2נ+PREe9^ye'e@.xXVˊ[V|Gv[& ]-+.K^\^gBtY)pDYqG e_| oY;v=^l 6MeyYey =%ʞeO$ʞăDZ DǑGeAXԵum%TdN1Pc: X'Cu1M&VJ */AQPPRPZg ii1<.-~rҗ9 <ҢEwmpq p\WK +‹Biq+-8 ΀ӥωSOϏcHiap<;Pl?Wl/vҼ`6&UOAH-}ARGDqbALi.]"ADinaX)Եum%TdN1Pc: X'Cu1M&VBR ^%/3|"(z 傇 (J^wJ VIMpCPp\WK ˂ŒypN$ 8 N%'JKGp$8%yO=`7Utl+yl)yLl@VLQHi%R)% $D1%ATI "JrAX Եuú֏Qpu2TdN1Pc: ǘ&l|]+&y _<E@x =xr9 [P/.;Mp\/~~ \Wep8"΃sg΀8Y 88OO`'{n @nQ d~{.n[EMp(:&xv\]ys,8NSEOD8Z8R08E`_`]v=mE֢-`3$x2AH/z&I) (' $ @|Qv=Q D=+"ob/aum%TdN1Pc: X'Cu1M&VHR䋞‚Is1xT ^a]ѝg-p(|v]wMt0 .>%. <8W,8NSON 'Qpq!G\b[*)xlVA0gtQH-N3x y=9> Ooy< n?.p\Gypg={=&xx!p0?h?ؗW'?g { v`[b+6MD #~ǽ{ $$ ߍ' D.O#ֵ~Rc: X'CuN4c i84 dZS$)<!yO>=6nyy.=$Ƚ.óyπ8C1pC 8 {ʻO;v l[me̼i NJޝdQRޝD ϻw1 D nEțxuú֏Qpu2TdN1Pc: ǘ&l|]{J<~xrC Mp\K\Wp\>$.8+9NS$8?&8,xp~}b/v]`'l[` ?CT@"H -"Āh"AӛD8{Jֵ~Rc: X'CuN4c i84 dcG #!٢Ƚ8ۢ[7 p\W9ep \9pVt<8N88>q!px|`n ;D&Cl[fm" d @[D HI QpHx|3^f(D?ADH7/aum%TdN1Pc: X'Cu1M&K>$}p-p& ,xp \yѹgsﻝ)p2qQ8w}`/# v n;vM5-b3@fM"4 Rq\]syѹ{gEgr)pRt"q;Qpsn~# v`97-`3$Adeni9SE) $ %/ &* D9W#WpCĊ_ JX?FN1Pc: X'CuN4cLu- >q5W]EpAt>.qg;nIp˾MGapHtPpf#ڝ}v` l[f&, 2D Mp-dQRDQBU"^}5V}Q DòɛKغa][ (i8:pu2TdN1PcL B6'޿vD7w*. Ep^um-.EDY bHTQʭ D2H%QD(ĈA#"@(ynXV1JuN4c i8:pu2Tdk7ܹ7]]D.s*q'D18,:$|Pt{=`)!~"Mlm dLQ(y"M RD Ix ŁXs[( D"gEa7ț8Kغa][ (i8:pu2TdN1PcL B6]w \vYt \]\=/:ΊΈN_B'DEݎâC/D>^E]`hqah+" 6 YL!JiRE) YgQ<łQ3nQ R=N]'o/aum%TdN1Pc: X'Cu1M&v՝+ǕK<8'LD'܎#a!pPtOWGz!z",D CpHRA ,J/z-VEQSD$®7onXV1JuN4c i8:pu2Tdkݹ.z\ :/:ΊΈN_v \ #âC%}ݢ]ED[E[f3DYLQ(tHA()Q< N1h%Ex]&o%lݰc4c i8:pu2TdN1!_.spNtVtFtZt xsnED~Ybhhhh3n;E;D6ibhhh(KpeEi UpH%D "^'ŀhQHQ(\v藰uú֏Qpu2TdN1Pc: ǘ&l|]ypYi)Is'DEDGEG<' vvy)!.&qjhh(Kq2C.Jɢ$Q(Aq$(J{ň%DE%N7%lݰc4c i8:pu2TdN1!_NsBt\pa!A}ˎ%)ڱv6-NqeJd=iTQD((%DHD(HQD^a'ɛ7ֵ~Rc: X'CuN4c i84 dqwI9~AǏ+#[Kpmmom,$%<~+C.&JH9~+Y"I(q ^"N+#^?J)! 7_a][(i8:pu2TdN1PcL B6uaѡGJ/ڷ^=E$vz"vHl&*e͢MY%$R%RDIn eb%bDQ{QD@k>lc4c i8:pu2TdN1!_׎sXвE$Kq#[bhĎeKl*EI"K"S"C"}4QDDD>"Q"A/'loDDD(B"\-L Ե!lc4c i8:pu2TdN1!_sP%+#[bס^;}.Mb^[$6KlȒ<+C"]"M"U"E-Y"I"Q"c[DDDDn"J"R"B"\"L Ե[?k+`: X'CuN4c i8:pi2A׵طl?Wbn_$vz#vHlMb_$%+cٞt4_)v'JH'{`WD(H;%B] X?FN1Pc: X'CuN4cLum;|G[bN_;$V-6/۳WD tR}H$JZ+WD8X;c$%$"}E,+L ? [?k+`: X'CuN4c i8:pi2A׵c.v.mnb-}m-S"W4e;_I}%,AK#l;+WD0P~a][(i8:pu2TdN1PcL Bp]v5Kh-%_ | /cL׳fNڮlg˲l)Aۑ.'U"OI~%KѶJlkp0 X?FN1Pc: X'CuN4cLum7;}smkMvHe+c;'Wd?I˶%I+O청1~}E+|0gaumTdN1Pc: X'Cu1M& F]?Ruk;g۲V?[|mOL6 ?~|JJ'Wx8?bD+Op?aB])lĺF 3C6: X'CuN4c i8:pi2A׭k?Ϯmf-~6oJ'O ?۶PILۜ'Ox?qM~bD#'Ckcau+5ra]lTdN1Pc: X'Cu1M&ś́lm $OF 遤D'9$?@''Od ~iDPކ/Xc: X'CuN4c i8:pi2A׵l $ $#t?i9_r I$#$.@beDHD ၄yum0lc4c i8:pu2TdN1!_][Ȓ&sd@RI^ARVF@+H$>҉H "H#" $lPTa'k g9O_ֵ!Sc: X'CuN4c i84 ׵5_7]2I_Y R3JYAʒVXZ WؕŬ(5zQ+\A WLkaukN1Pc: X'CuN4cL|\i]K&me+JKYYʒVƯ,ne+YYt`)Q+\YWLkuaB]# 5eN1Pc: X'CuN4cL??F?kTRVU%*aU[MrbVUE&)bU !ԵҰF5w]#gΪu7a: X'CuN4c i8:pi2AHoZ>'3ω_ω]K550AP/P]#g 5֏Qpu2TdN1Pc: ǘ&|źnlkkXĵI[صYK rm"&| hB] [?k u5rθ뚻`][%dcpu2TdN1Pc: ǘ&|Fk)_u]&QZ2YhFQk&.b Եau5\5H1i8:pu2TdN1PcL Bp]HCݿwJb+f=bZX!V$Եau u5rPJBհlLuN4c i8:pu2TdR܍MZg_]b֘/$KB"/$lMv8lyЀpWF~Rc: X'CuN4c i84 5w]~Fu-)Q_MՄ5a 3lњO!k ٘4c i8:pu2TdN1!_6w]I("G8IDATZzum`][%dcpu2TdN1Pc: ǘ&|nlJ5ws0 u->l5XlLuN4c i8:pu2TdU܍|R6wcs5 Gk$FumN1Pc: X'CuN4cLu U?`s76%jhJ!Sc: X'CuN4c i84 5+~8ߟ3ջ33~{SRFkx=/iO7p!gɟH]Wb] X?FN1Pc: X'CuN4cLQ5H/m&n^BYsb F5י:_hWXV ٘4c i8:pu2TdN1!_G$?`6??u&-mBoT7O{s!['3 -MZԈg&j$ޮFj$ºRTdN1Pc: X'Cu1M&ZuK"qR>BcKX1i8:pu2TdN1PcL Bp]#ZuE ߹>]|CHKyy]q!Kmܧ|5c4c i8:pu2TdN1!_xZ}K5ml_sh,)mTomo߶??9dcw|Zw57Cpc4c i8:pu2TdN1!_xoɿrKX|z޾y?PƐCֹV7oK#>]HܧT7FBpc4c i8:pu2TdN1!_xuۿW S$Sݤm?損c戵LJhޖ1AN5v5rPcTdN1Pc: X'Cu1M&*u*+66-)m˽ͯ}^srI?s uMZH<_W#~N1֏Qpu2TdN1Pc: ǘ&|F46R_؄+T7/-r 5lWqQo'>C9Ku5rPcTdN1Pc: X'Cu1M&uM+= !uW8A}Sܷ'1uݤ+ỳx1 >,N1֏Qpu2TdN1Pc: ǘ&|ݺF鼻I_| [~k د䏤i9! Dϙ!i81JuN4c i8:pu2Td^H<ߺ!_kз;k>,޺93|9Đ4c: X'CuN4c i8:pi2AH0;_I/?66~u[-o]f9 <'o^V?oXlo"x}A8<G'֪G*o 69L~?Fni \~*ş~^;ӽ ;U[H̳=0 ޕ?"ϼR]x0U Ǒk˗p87$%;XKo*.zY.|IlcE{%wa J+j{}!k( y}7xlh]#{E;.?7%;R'dw7ﲸ3|ŬdALG]CuAŧ>J0^J!m=w <Ư>o"oJNOq(c43;q+AIR;= !7UI_8JWp =5ޢN<` À;|?y]}"gI܈ "pKIVz rD0w6- ;&"|&7'gdQX=;N B\BnHk&yp#&[_*'&/z~wzc dPx3@>w%w{3F$Ae /5׹+W+7yB:>GAn->Cd$$:q(YEBn a :H&`:t{>LO|Ά5]#!Z&K+mk=G[>ɂc {xw }oxnI ͻ-Ё}?Y{Laϲwg/x2)Ȃ&_i/Yg1t#@'E8 KȂV:vaVٞ,hcyVnHWy /Jr7Yl^UT[2Yu$^>7o rq/C<,a_nnܫ'҇γusF /uWUo yo',C<+|v$Yu2ҳ+ F=w]OƻR~///_Xldoz$dųbygIW-o 9}HO6)xd0?]dm>S-3>[}ຆ0\ռoo+8 kϙ 57J{Ngj X'CuN4c i84 Z^TdN1Pc_dN1Pc: ǘ&`] K4c i8:p5b i8:pu2TdkAzIPc: X'Cu13~W: X'CuN4cLu-HX/ pu2TdN1sƯu2TdN1PcL B %AuN4c i8|^N4c i8:pi2Aֵ a$N1Pc: ǘZ+Pc: X'Cu1M&$i8:pu2T9Wkx:pu2TdN1!Xׂ: X'CuN4c>gj X'CuN4c i84 Z^TdN1Pc_dN1Pc: ǘ&`] K4c i8:p5b i8:pu2TdkAzIPc: X'Cu13~W: X'CuN4cLu-HX/ pu2TdN1sƯu2TdN1PcL B %AuN4c i8|^N4c i8:pi2Aֵ a$N1Pc: ǘZ+Pc: X'Cu1M&$i8:pu2T9Wkx:pu2TdN1!Xׂ: X'CuN4c>gj X'CuN4c i84 Z^TdN1Pc_dN1Pc: ǘ&`] K4c i8:p5b i8:pu2TdkAzIPc: X'Cu13~W: X'CuN4cLu-HX/ pu2TdN1sƯu2TdN1PcL B %AuN4c i8|^N4c i8:pi2Aֵ a$N1Pc: ǘZ+Pc: X'Cu1M&$i8:pu2T9Wkx:pu2TdN1!Xׂ: X'CuN4c>gj X'CuN4c i84 Z^TdN1Pc_dN1Pc: ǘ&`] K4c i8:p5b i8:pu2TdkAzIPc: X'Cu13~W: X'CuN4cLu-HX/ pu2TdN1sƯu2TdN1PcL B %AuN4c i8|^N4c i8:pi2Aֵ a$N1Pc: ǘZ+Pc: X'Cu1M&$i8:pu2T9Wkx:pu2TdN1!Xׂ: X'CuN4c>gj X'CuN4c i84 Z^TdN1Pc_dN1Pc: ǘ&`] K4c i8:p5b i8:pu2TdkAzIPc: X'Cu13~W: X'CuN4cLu-HX/ pu2TdN1sƯu2TdN1PcL B %AuN4c i8|^N4c i8:pi2Aֵ a$N1Pc: ǘZ+Pc: X'Cu1M&$i8:pu2T9Wkx:pu2TdN1!Xׂ: X'CuN4c>gj X'CuN4c i84 Z^TdN1Pc_dN1Pc: ǘ&`] K4c i8:p5b i8:pu2TdkAzIPc: X'Cu13~W: X'CuN4cLu-HX/ pu2TdN1sƯu2TdN1PcL B %AuN4c i8|^N4c i8:pi2Aֵ a$N1Pc: ǘZ+Pc: X'Cu1M&$i8:pu2T9Wkx:pu2TdN1!Xׂ: X'CuN4c>gj X'CuN4c i84 Z^TdN1Pc_dN1Pc: ǘ&`] K4c i8:p5b i8:pu2TdkAzIPc: X'Cu13~W: X'CuN4cLu-HX/ pu2TdN1sƯu2TdN1PcL B %AuN4c i8|^N4c i8:pi2Aֵ a$N1Pc: ǘZ+Pc: X'Cu1M&$i8:pu2T9Wkx:pu2TdN1!Xׂ: X'CuN4c>gj X'CuN4c i84 Z^TdN1Pc_dN1Pc: ǘ&`] K4c i8:p5b i8:pu2TdkAzIPc: X'Cu13~W: X'CuN4cLu-HX/ pu2TdN1sƯu2TdN1PcL B %AuN4c i8|^N4c i8:pi2Aֵ a$N1Pc: ǘZ+Pc: X'Cu1M&$i8:pu2T9Wkx:pu2TdN1!Xׂ: X'CuN4c>gj X'CuN4c i84 Z^TdN1Pc_dN1Pc: ǘ&`] K4c i8:p5b i8:pu2TdkAzIPc: X'Cu13~W: X'CuN4cLu-HX/ pu2TdN1sƯu2TdN1PcL B %AuN4c i8|^N4c i8:pi2Aֵ a$N1Pc: ǘZ+Pc: X'Cu1M&$i8:pu2T9Wkx:pu2TdN1!Xׂ: X'CuN4c>gj X'CuN4c i84 Z^TdN1Pc_dN1Pc: ǘ&`] K4c i8:p5b i8:pu2TdkAzIPc: X'Cu13~W: X'CuN4cLu-HX/ pu2TdN1sƯu2TdN1PcL B6}WỉM/7Ј}j b~ӻKDsfld&~z}]&+kLF޲ s4~t GXb"cÚRB!dzljJ̆3Odxn8k}H '_1~ѫX V-o!)g[>@/A?,==ny/wt=p9~+*ޕ{ 'p,]_יctU'#yޕ^M>`e|*W/o<>vF:xk#`H^w%3B$O]&#l z#y qѻJr /%нdtaQ: %+Eq{52rɲM󾁒T{ ߕ›yw<=w%{EHjycufcoUOԽ,- P"#~x_{Y|̔N#_aYՊy]=Y'd/(C-o,]HZ/49{|}2SJV.8>w{\wAn-ϳzW 5Ie+;wrCE?^[u2JwY{q? Es-'W+ɍ@u6IpYx+7Pxw`YRX]ޅ]'n)ܐnwH7jW$1R/!k%y4S|I=tGvOSó,} LX|+< w{VK7>Wps.tBVI\InH7;x}%Kp,H_{-5C}ԃJwZ~Vq?bPC/5J.dNuwk!y]wJ^~#˞лg" |_D)MsóϣnlVz><Ё{׫)#.Eϫ3ҵ!dW.njVx>xά'On;ExGys6_]eC`0!}3`B#;2X0 } #e}{aB=X0 /wf 0`0 `0 `0 `0 `0 `0 `0  -Ga0 [3'1FwfRuM_MOSx& f;gOwfRu\ p7e_:z"^MZC3wfuM $c fYj`9#ߐ{'J&LuM<piH>ag rKwd"ńM Ɇ5߫@< : _MoV:gzj}EFMΆ5r^[W ^g Is[$K[,} w&躶| ׇp+'Y5& f*<⧆"Y-& f|!׏_d`4ed N6I~!󗒼k+Ys_MY!}P`!wfu `0 za0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 ta0 tp]+ `0k`0 Eu `0 &u `0 &u `0 &u `0*xn`k `>Q7Xقkr#_Y|am 3~r jq+φ?;@h?l`ƯJu,_I Զ}k .Y?k ''Aֵo?bW0WCxaac`6U`]㹔K{ `?$b0E ~}W)8ʆWȿV,WV?|@_K?Zۈ`]#^N+^;WwH=0A?Z̏$?ca0u57ϩ?w?ƾ>??\)`|YaYۨ`]v#V^zxaxr+;Yrb]|`xΊ`MRÂuۍ5RZIxax[][Sk:l 860X׾п VFڷX,^w5??ƴ1sVk&5WԪk#5iob7+$ ~elx}Y;$w?oqg` Mnf_cU `]ϬS6lk#"m*oOa0eolhkvVmOkWB?kò~"əO'S`V / ֵo=6_#y6_6ahlƆ<$XB,X׾|D}6+]wEiE|*66 ̯/ 5.Rc7}s5&j?Ɔ8kkB-Xɪ?Klau!qr_|Ci K|lnjaò`0xq] NŪ`0 `0 `0 `0 `0 jW`B2uBgl% /~;k!?%} /9LwD eX03ugb}1ݱR!W`*/8 sŸ7E1G{wx\r]|6H6`FV"JHJR)GյZ]#nzH G7^!A8Z(E8+ҞsY8ūu/y/R \.ޝlexZ %`Cd%"{@?]LN|Xto/y^`~dYQFXF]./ ޵dSϢt[u-B }*ݰ*mM˰qVW17S+3˧U"]ʵ5>'$#d9#c0k~o 5;-1 ֵЉp^Kw//%rmͳs"{wj o*y埮 ?{ ߕ"P1I-dKxK D8#Zl;^f`] ;_`1HnZ^rG`Bgy?][~@wB%7= 5L|MYFaw¬=XB%9ݗC K/ dJ [Jv`bGgׄ>=HJ=]6i)]C>}>6>%$[X^Z~.}1k ֵ 9s8\wEٻ&'|7ޕ{}&5Pl--nT.ɚw +Οy~O~o kR0;H¬1X׾͐kv ``]F `8 5 `05 `05 `05 `05 `05 `0k `0/tB!6 5Bu !B(a]C! iXB!B5Bu !B(a]C! iXB!B5Bu !B(a]C! iXB!B5B&Եa0 `B0?[!B(D _-돋IENDB`shinyjs/inst/img/shinyjs-logo-whitebg-small.png0000644000176200001440000002236513542227616021402 0ustar liggesusersPNG  IHDRd0sBIT|dsRGBgAMA a pHYs+tEXtSoftwarewww.inkscape.org<tEXtAuthorOz Lockez$z$:IDATx^|T+  >y"v]P^ѧ{y,T@ (H!!ml/sfɒv& sܭ̙30Bh$QPKPPQc**\-sJt8dl?f _LՀ5#BKf[6i "G&3z,-([7A!pא=|FDGhe?<{fÖ[# NkPԾ$X-~?6 hJ&Nw2J(ORoS@pqd*EItR`[dJiQd#R^|"U$:Gd]kx!!E(u5mJ,-= b|n_¤H8*|/0eȜaQC1ȜZ]K9j*$g@f\Bpi | Ht;_pU$?PM9rH̩8F5q[~+Y8z'9߱5/_(o"( Kvӂ8M[f#-Sj >ZL(" g-.%X\<@m2'!4fgC_,wD'ز,b1c2gde;L]%klvJdzI=5SP8-M iP4 O88P0ڠ09cYj7q̉FP^s!8rO>oF\g%:qa[A E^;<{-.T|H*2{g猣{鑩{a%Ѥuߒcg3ǵVy6>9D'}1dTqeBO '9'"g`W3Ue*ë#Lbd8Ur%Q?xEĥYLiu#ЭSblw_c>CFa8 @E*#PJ^[ l?i#g29IB:N,u:JJ鋏2.DYa1l-΁tAj E/k ʾdAtg Cj%j_ǎ?R+s#q_{1><_ N3W)t9pO͉Cҡk⤾=eNKdl ͆v-pȡuz-+ᄋ~'̖L9.II|-)*O 't"s³gZTZ_vH4Uz*g O!+ıE;&jҦP46YnFf_YY}MCݫ@0KVb?vvƿen1ސp 73 ZKv M/W([:i5n-bӒan nG ;A1bC E"#Ex|~uQ0H>r0'*?vF~Q)>۶B_#sbZ\Vn(Jqz/Uߧ:Ap kע2 H{:#_!P"̻M,D +w4'fǑ%XSwцfuSf|%JHjBE~Wd?D{r)ؽo/19ܐ7a߇qH|m$]{d?Aׂ&;cZԾzȣQY.~c&&=pPᯖwU=9psD. n쓲g8qb0qtG}M=FʜAڴ"Kr$|;H bCwˌEKCqC~xU4 εw.|Dhqgɜݡۈ;+PCW$6ڤٟtH>uj3=;2ҐE*d>x%`gobf`#7_"ȞabJAةK;o6%,~.{ l\F7|ٰh@LG?dNPF Xo}-XtvMwbZzYpJ~,Fd^HÐK cX s%7\D%:]{ueXǝO& ~o*m$U^)^6gFߑj!k'v(kf{v3QSѠ~?|2vbQCdE҂e&mV|#zݞNa2%8:!ݝdE NEEr峪ϬjxLh=yݥ,p m3[XXcL4 P/5v-p?O`@>b, 6l-#ft( H]G{VwI!ֳ .k-f ,.\҆ɒN$)^ScNP2ѓ7Z0bw?Z cpw(ڻB.icD@9!3G(u3꤁PjaBA-}r{2i?|5v]a d(s(vYc`2MV\/ǢdUGxK>QsTP7}f^u[N 7?L=N⠻A-ѥ"u3 cC FhwFn<ŷ2Q%EπNjc~Ueci;m{hƋЅX3tHf~mO<[P+pkhogݨ)S&OOp#kTu3v1Sw@5{|1 YM2qt9Vl0=Q"j<(an>r̀U-'9IXFqXAyQ+,hԡ Se/_&Q㥅᧝k@?+߱NaڹnxVد+c(sIwb]X?TXtJݮ.([ʫ":/z5 WB|vXd?9o*yӭ ^|f  0[7<|Edl,Sz5k^V$\^xOrI 2fp+IOPxqڨ":LwYD,dQzě۳DGwLfB׭C\O sv>*Nf\'Ⅼk%ur]MV>-Yˇg{2*ՊNVZ }"<+ݽY[6hh23Q RxGfJp?|XҊG`1ؘ>nZbǵ}ؿ:&'#], ߫|{̭zu孓_z(F/Ap:0" ]J.ޥn>i}sƞsL%ai!FT89"$Fq 9תE3O:2OuL%Idи a2z.@R噪DN۳>XަG )ΠP49eWbͱtAЗH,af^qxl9c30 [pyzDpO~-;h #QK2y]^qΐ"ŀ ;v# UgQ˫瑝tl-t >93Dx|>ܷLj@6NZԽ}7~E]{OKc xC8v>vOp^׳;9dUQE#, c3zv*M ކ}tPxoOɒ-,#z KسNɚyKv>lf:j!sbC񊈈+:MM^)7+žm; N ;\pzUP`mS`Β)PZ=ƄD;DGݏ r#nnWu+|jF*Ph֜wl޷yOfk0Yl\5(VDGLbʇ-F諅V +، U=C=(YuY*v O]|m+EBRtEab;jG&Kn ߨUTcqY9C>*sA DƒNa!L֜*+>5H$Jt IIy9 [?U$&Z˿{/Ev1qPH RmeLK oFaɜCu @r<^@rWpı2]DP,l+8 {s{")YNoOELiĎȠDGpW(oš-bADGq"bC÷_yLC8NO`i>(QRo>ֶ|/'<~8{v~5%Jt I(1Z-%%`HߞX2%l9s <@O(|z!z>1S]d< ?ĩa͖Xy;8~@.sc:'3Øa#s!Etg$(~}-)`80;:ɳ%:fM;9(EPDBhDM녢?IENDB`shinyjs/inst/img/extendshinyjs-demo.gif0000644000176200001440000017514013542227616020022 0ustar liggesusersGIF89aXM5QE1G7,:E4ITF_^Uohg}z{Ⱥſ¨Ħű! NETSCAPE2.0!,XA H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲe(`a2ɳϟ!@(7s]ʴӟ H@h0IunTXPʼn@>Kܫ8Pܢ[T@JRY\v#KR8i9(^eCYΖݺtP36To[)УGUkhA#΀]xR =y>%bޠ)L4 xo(l60~'Vhfv ($h(,0(4(P0<@)DiH&L6P*iAj,q@%ب%SP@J|>mPKO%PpJsigJuy'剒|&*J6*"A I db:E7A#閞vA"TθFWZ@ :*x R@a ѬIQ@7}V2o.@pW\*Z*Z {[VQ@nPD. @u<LPJ|oZMF@ "ؠL3+N H@@Ww(&  t\傓(XPsӣOt ;s\fu.o?4)"q'} %nZQ,Cdf^fipX 7ԥ)@t;I? $@'Hr[/?  D =Z_WXϩH! g81(w@ H"HL&:PH*ZX̢.z` H2hL6pH:x̣> IBL"F:򑐌$'IJZ̤&7Nz (GIRL*WV򕰌,gIZ̥.w^ 0IbL2f:Ќ4IjZ̦6nz 8IrL:v~ @JЂMh6!2, *5@J U "^"$h$&p&'y'((**++,,--....////000011111111111111111111222222222222222222223333334444556666778899;;<<>>??A}ACwCEqEGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~e!2, *5@J U "^"$h$&p&'y'((**++,,--....////000011111111111111111111222222222222222222223333334444556666778899;;<<>>??A}ACwCEqEGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~e!, >222211111122111111111111111122111111111111112211111111111111112211111111111111111.0+.%,!+t+b+U*K+D+?+; +6+1,/#.0)10-30/800C11N21^41i42p52w53}432154:6?9D=K?T@\FaOm_mghm^wuSkQ`OZORRIWE_?m@vB|HPX`ceeeeeeefhkotx}߿n:-H*\Ȱ!#sHŋ3jȱǏ 7J 1ɓ(SL9˗0cʜI͛7Iꄈϟ@ JЊ-߽[TӧPJJիRIBՊׯ`ÊK,V딶d4toߦKݻx˷/ݑzLÈ+^7.ܥ"]ǹϠCMipO>ͺװc˞M[fBw2teˆȓ+_μ#B/.}سkν1M˛`K_V˟OO=(hW5`fI&e6T34t ($hFb0(4hcLSMe[YC ɑH&L6PFyDR&IeXf\v_*Pc 6U@J#5Cαdix|vFhj衈&袌6(kpR5ٜ;v6H3v˨jꩨꪬJjD kj뭸뮼bVMd6Lx(8F+VkfmmKmކ+k2v4Ny0%5ҴB2oCalbF+XS)S*! 4Eg / RMjNԅլR LDu,8< 8&6Ԭ 9dC%%)*ԠsG I4/T`hNXWH д|6rcupp ߐ pg=w+8EwKNԁֆuԹnW^c9;TMq{ 7Md4ƫ|:ļc5TE^=ݷO;$E~9⺫SoA7|q9 S>֥́TGtKB_T>D."Cq @p81!=jY`law* $6)p%HC͋wH*pQHE8dzB8Ĩ'ԠA% aT AUX[\EFqt% hX*MdvV+bnUJS25ְXA\V1&8.xqs!;5`eC 6 `ICXc 'ON`H:v~u"F`ChE)2:D'JъZͨF7юz H/ 1Li*tm`P*XV8ͩNwӞ@ PJԢHMRԦԦ4M mG[8gTXJֲhMZֶn\J׺x=k%QU@lMZ7Q\k٬#bcB8Kp)3e!Kb!.,!p7@9э?d;!!sCBp n%!2nl:~;n(cXtKZͮvz xK据۬ FtKͯ~_r%Ӓso;nt/0r{ \#].dKYn,CgLۘ^C-d|"H>h cuI:L\̂Iβ?̢덲 \\6w8,GP]=H೛Mh6{9a~l < MJ˶3{mFcH8tPh,CNCP0-,J P Kƴ/E+ŧ+872q=SBeZ Mrȴ9heswReZln? ?KzS sE{c'{͇@~h!M~nUlws [HQ}8{w;ܺ*_w;6; r@Ұm}[| `< z!>} z9# >\(Pp67u]vK=6©s}k; Lt#ǮY[)Orcp<+[^ߺWx؝gCy}zؓ~?xon[7!|/vk~OI~Үl{_f'3G!7 菿@_?BQ8J0pJ8`~X8PHW Y @`H`J찀n`Y&`Zx\`@ ' .9h8N׃am@8dAsP L sXdNZY\hMgahkhH`pwYyXF[  ф:hJ TmX{Yw{8H@o.21hS0 XXkj ~GahhtH8(ᨋ=娅縎؎hظxG|x7}x؏8z8(I~ א}7 }y˗y |&MHK9@J0'L))1 &*Ȃpf6yYxIM ЋxHIJYcHAs`@UHW9^ɕ^h(b fyHa h(h(Xep8})4z)FY yx)ט#|!Iǘٙ(Y|`I$ךGY{ uiEG¹C| XɩɜB>X.8 (ܓ؝mٓ)(Ey@YjȔJ<)Y~̘Y؟Y&͓'L8YiiΓU0 -~Dr"7) G]~ 39ɠDjLCziJjLڤ٠PjOZyXR [zZ٥ٜbjd gʥYչUp6r:hSv 5xjϙ~~aʧL DIh,9 n9'A`) WJp*z鈖)I"X9N) )J jY D ~zZʪHڊj!j)A&1-Y~%1~/JJ"TУzjqѧ[0 Ұ Zs/*ѱ{iZ!#%:we)+;f{nʲ- :P@SFff5 gFg9{lf& jX &eTfe PyZ\۵^`g`6g/1e@Ve  P@b{xz|W@ LdP-b pt[{۹;[{{: @B=8/FJLNPIR]V}XZ!2,c -p((..00111111111111111111111111111111111111111111111111111111111111111111111111222222222222222222222222222222222233334455667799;;>>AADwDGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~e8*\(C Hň *|PG?$;$MlB%A5eiSNs2 ֓nUK >ejԁU*#ׇ n,¥-h]ɺL 7܅2Ja` |w0߅!2,s5 ,U$))0-0/111111111111111111111111111111111111111111111111111111111111111111111111111111111111111222222222222222222222222222222222222334444557799;;==AADwDGkGIeIL_LOXORRRSSSTTTUUUVVVUWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~ypg_YRǸM˵J͵HζEзBҸAӹ@Ӻ>Ի=ռ;־9׿7421000011223568:=@CGLQX^fpzĢűǸe(*LoÇBP"ʼn/>̨q!ǎ An#I"QTّF6I͛8sɳOz"E UM e:۷nƖj4V,cXu+f"KX[c(Aķ걅Ǹ.٢KSK4uRH%'Ar!O=ĉS!\?ddp_f ݱ uRvzּN׿s4ԇ'MM.2|[.U1q⌳*%#W_NNGO 0p\(!^z C_  }$Ђq`ÜC #wÞF!R:Äl->8E6#S\ȠM|#% $exdeR ͓IAAM7I4RMa,Q@! , *X1111111111111111111111112151<0;R0E=2J48X@JRFZWHgQNsS\NkU|bw–٩HKȰÇ#JHŋ3j܈p!Ǐ CIIO\ɲ˗!SœI͛eɳϙ: JĠF*])ӧPt*իbʵ@^Êe vٳ>ˢ]ڶp|+]t˷߿ LÈ+^̸ǐ#Kʓ3g͠}MШm~Xͺu԰]›= ڱsݑ#yN_W3oسkνOӫ_Ͼ˟OϿ(h& 61Vhax@Drr>$x]'&l0D\P<:A2AAdL6y5~h djnZ~XdSިj8l顊p.idfgy@LA lpc (]:~PV)qv衐vivPR馡rIgK~ꪫ"XY衚5fkoykApd+Vkfv+k˝ +k,l' 7G,Wlgw ,$l( o0,@1<@Hl30"L5 4.D=&n>Z=%E3pthj52\ @c}vڈ h0xYj-΂d ̉. @N ^yf3Ԡ\ W۾ P*<݅-@Aem ~DRnyp> 9n88@6k (|`Av72\51wXppL~tXA[֤F5AxjV)"ƒUgbB0+l5e2 o`  /egؙR uL"#0EшHTHFыEj,`2Q~#ո.׋bxl`x d:ԡ^4`>\$/b5$7Y nu;R!2,eb111111111111111111111111111111111111111111111111111111111111111111111111111111111122111111111111221122222222222222222222222222222222222234587<:A<|E>nI@dL:QH#-  ' "402B:(!Łde1bYP$D&M"TR'Sv|"VMҔ`:hpgϟ=͍4W7q+|Ov邉Q_$c=^S+.V.]vRZ\NUKṇoڳG"eJ!kl⁗eElrBO{F9ei7wo.!,X212222222222222222247F7C6?5<474t43f12[02W0:U0FV2A`3Av7I=TM]^hjs~srleeefhjv޶}Q@91-169;;8.---,+)%#!  H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲe* 0cBɳϟjB8u]ʴӟ81$@8+j֭&1 ۷m>)pFMrXJ5̽fu-KNp+^r,B%X5b9#O|Y,Y[2MtDZsՁ]մ۸!-&lIwLvȓGsfr~fUe'νPEm{"0(4h8<@)Dɣh(I+eA`TiXf\v`)dihc|$HGct[dY*蠄j衈&袌6裐F*餔VjfzQFRhHZTAS*무j뭸뮼+lVnL,E afv+k覫1LLQE]$;'GuAFYPH?' 7G,Wlg7l0ALPA/|hх!:8<@-DmH'L7-: D%kEh>|EL hlp-tmx=/Au\rGuJތ7G.JLa*oIJ`#n騧DU\5rACKP{[PD9/W?}A(Ad$]g8[o觟w@dZߵSCK;!a Yp Hzq8#8^L W6BP x?6t! cx p[ pH">N04&!0Ph*ZnH,fލO"M+B[yhvi d u@ 1ʄyܣeP!m, H}@ $705*n{A\ ǡtW` ,!h,}HHt (zm- VMdRPJsǤ@ :ps|gMխtCـf-i[A( OQ TYLk.-])4S;$ 3x5(=| $xA Z1 5pE&ќKt[ 6c3`55͐}eJ& SX L fLe0 jP CE65G]qbӪ 7XFkKwī`shR^nm &X굍\`c'{B$e7²"NΚ61O ;lW>{k7r{*XηUg<}"BFu֞;.qxwms&6|Kͯ~LW&|'}e/jv3Yΰ7{gPը`k׿6u0gL Jvq,3-iQ]HN&;PF/y̹?nL*UjX`L2h~UU/N“'@]xγ>ϙT>,:IQҚF;ѐ'm6 TɊZ"#yӠGMRZFHRRWVհgMZ{Bεw^MbNf;ЎMj[ζn{MrNvMzη~N 34@NXh='9 Ro\3@;$$9L~rw' ` 5G>1A7: cn.` B>@x qu[4xW>dxNn ? Vp @f`[+H>`L>P` TEG^@!@hnC>'hV!A` Rple (`Go?z|@lUо蛘fv<*&x?-'`zMD0agB48v{* D'y(aׁ@ "Xn!W!,!O*02nppx<؃>@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8XxZ؈8Xx؉8Xx؊8Xx؋R!2, *5@J U "^"$h$&p&'y'((**++,,--....////000011111111111111111111222222222222222222223333334444556666778899;;<<>>??A}ACwCEqEGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~e!.,i\ (08?!G#"Q&&`*'j-(p/(t1(x2(|3'4&5$6#7"7"7"7"7"7"6"6"5"5#5%4'4*3,3.2/20212121212121212112121212121315191@/O-a*y&" "'-159:=?~B{DwFsHoKiNfOcRcRcRcScScTcUcVdXd|Zex]gv`iudksgmqkprpqurrxssztt|ut~vuwuwvxwywyxzy{z{{||}}~~}}}}}}}||{{{{{{{||}}~ºĺƹǹɸʳίЬөզ֤أ٢ڡۢݢޣޤߥߧߩ߫߮޲ݶݼ]H)Xx"IHڕ o$Iʤlذ; IT8XQ82GST6KW(#@ҵKRIlQ.)NJ& a&La'yq1 2` c\8VIa8%-z!TZ9Ze +f)h$G&hdȖ[]8ҐvZ:tܘʲ{'VIkîfbM!4w0`arlʛѸAlae܈7jАQk{A)aDy_z5CY5ЁN94M=?9`Le!?p9*"7" 8P@18 `b4Baps:`@@ 04)PV VY E:եYCe*!>,i8?+n((..00111111111111111111111111111111111111111111111111111111111111111183>4D5I8L;N=P>P?UCO?M>J@A?E=H;Kz>LpBLhFL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~ݿ޺߻uW9 }HǪKItiUi0 8hрhҤ fLڳO9 X0N{I1G)!cr֦rb2<=q̎TfWrikߛ gmg'AkƩg&uIghb)h>ʧs9a.ꥦ".bi8JZ*!2,e4   1&Y,&/,001111111111111111111111111111111111111111111111111111222222222222222222222222222222:/A-G+L*Q)T)W*[)^)_)_+^.\z1Ys6Uk>OaHOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzz{z{|{{}||}~~~}{yxvusrponmllkkjjjjkklmmopr{}ZC-" eL`*\P@ #F4 ċ -ZĈqIrD P 2˗0'~J"r!ʟォ|Gw :xRqIq&F`UMsVMeˠ9FJ>B*͙DOV"7*3!u3f.e|\A,W̖%iwMBu~Ջ "@Λ 1 1cرsG4PK@װcG۸s N#=p΍Cw!0,e'111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111221122222222238447492;5p8+Y9(G5#:4/2'/ /,*'% # !      #&, 0"%6*,=03C69J<>NACSDFUFHWGIXGIXGIXGIXGIXHJXIKYKLZMO[PR]VW`[\cabgfhmpppqqqrrrssstttuuuvvvwwwxxxyyyzz{z{|{{|||}~~~a h*A?2 #681ŋ3*lrP9" H<փq92"#֋,^'p;qPvAt cIS`x;gG-xBTaJ0iU+[r|MQێc@tYh+nǎ +X\8 7rwpYiѤ="[ͺ!0,>%.48=ϸEAhCUE}LLjNS\OXLP\=NW7IL4G@2K70_010112222222222222222225;ׇh& 6F(Vhf!GPPAXp$h(,0(4h8VD@СiH&L6PF)TViXf A@@C 0@1hlp)i@x|sa@@ qF*餔Vj饘f馜v)@X@@Ix*무)D**&@*k챲JP( ,Vk 6@*Z@ٖkb ޚ:?@nkya߆,˯y7q" @?wǛ$1,v@$0qŦ*&<3Y"='t MЉfѵnXg}) 4LuYpnegkqPc\HK{k M2  V4OCp0C$foQk@5= ~pS}fDPZl`jO74A-Na)aEO<== b7>D :>_N_v`=Ğea=ٛ}A$߰B ;^0?iOw@%a\ وM:rd<9MwR2T=a@g@b6{`֣,=~~0}Az>2$2 !GSƺzɖ5exKݶq4A]T~2 }ṙvsb:P"6sG{3dj冰8Gqc5ƥ?!C.&?y`\N3|.q^e<9k.tY;:3.]JgT'X;k%v 8zg},ӯc J]vd`->{}︷z}7ca-}&wcmxt5~1}wW>/ev;y`Vʆ0֖ɜ\ús6,[ ڔºIIn7??ʽ(s;'wng¨4@VoR]P`(I(5b6E pf(Xx&Dp 4C*`3&3  284X6x8:<؃>@B8DXFx- ]4BS72S*Ȃ.Z(\؅^`b8dXfxhjl؆np\ZM2c4.fd4)+-8Xx؈8XxL؄ 4i. C*x؊8XxS2&(8Șʸ،8Xxؘڸ茿؉ 4._2VH긎؎8Xx؏ 82#-SӉ ِ9Yyّ Y IY*<03 ْ.0294Y6y8:<ٓ>@4#G.R@$PR9TYVyXZ\ٕ^`b9dyA/^2*Hi-#Lr9tYvyxz|ٗ~9Y|-j+ߒ㖿9Yyٙ9)&@r*阦ٚ9Yyٛy`29șʹٜ9Yyؙ8iCS9Yy虞깞ٞ&Yyɞ!2,B&1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111222222222222222222222222222222222222333344556688::==@@DwDDfDBXBAOAAGABBBDDDGGGKKKRRRWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~leH)‡:81E+^ܘ#Ǐ =ܘq$ǒ&/LP.hdiq&M6obԩgMsl(!PRDtN B:p*UVf=ˀ!,&*O11111111111121222222111111120B/U2d/if:H]LF][I^jTkq|£ǮԼǭѷH*\Ȑ࿇kHŋ3jȱǏ 7N Iɓ(S\yq$˗0cʜI˚8sSdϟ@ ysѣH6,ӧ?BJjJVjj+ׯ`z K,ԱfӪv۷5KjݻxB߿ LÈ+^̸ǐ#KL˘3k̙cϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μУKNسkν{0O 6DqBOtw~3/g\@@zH Az 4(?gB{`{,Ȟ{ b⋶q0T"_0TB=h䑭G8C})#zaЀ\#D%>clX0C{iAn%wI%'TAL rL0~V[{pfN%z aM h$*jkz\* cx0 l~Z,+myͶJF;;iD j)ѹ覫JǢ ,l' <įD"/+lgwll@< 0o,2LE<1 .߹@_, a`8P=H[>@ ,A RVm?gt PP  D 0,pBaNsR~䩎X L.z1`HFvʂeL6pH:k !,A*?21222222222222111111212121<1L0_i,}]1}a:Xydξ/c˒m74` H) R&aV!U" a̽`(,0(4h8<5DiH&$B.PF)36IXfUr`bih2l%n)'#,Ugs6y'wx0g/ \jR.J u^`P v鑊[Ri ~>z @pA X*n0֧cvZkХ@ݨ6;cĀ(~e lh:Ɏ5#䮈k'^ۨx*YhP0A*n+nY`PֹlŐjRJkOJ䯑EZ xeKBz9, At38:#mJMZ Qwz}0,6lf mwxܢ- Bw'7K· w砇.褗nc=9~0 |n?w5c7o'<l/ogPo<{n/s>ŠLog |}'H vN}{_gzʍn>H! , *o11111111111111111122222111224F;U6jN;[KB<@<,2O07a37n35x3353D@^WxqHÇ#JHŋ3j8!Ǐ CIIO\ɲ˗!SœI͛eɳϙ: JhGH*EtӧPW6JUSju`֮`:*ٟdϪ] ۷5KWܺx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μУKNzسkνOӫ_Ͼ˟OϿ(h& 6F(Vhf>`B!l($"%">d?Bl ?@l0(ωh(cu>hL6 `׃9hd<!@|DZz)DlÙx@d,(p@Sj"/iUB*ص(ApE7Q81;:"=D:T^@!0,ex11111111111111111111111111111111111111111111111111111111111111111111111111111111112211111111111122112222222222222222222222222234586;8>;C=xG>lJ@bMA[OAVP>MN4>E / "   ",!#5-/@9;KACRCETDFUDFUDFUDFUEFUFGVHIWJLXNOYTU\[[`__bddeggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuvuvwvwwxxxyyyzz{z{|{{}||}~~~¿ÿaa4 %WĄ\f G=r 0$&Et .BƄ&?'p(͞9'eb-dn*s꿪s2q+`)LMEfذU~vX*+~;0a0DV„5ؖ/]O8da(FàMF۸o!T,X     "*"-"-#.(6,;.<.<7<|8@422222221212121212222222222222222222222222222222222222222222222222222222222222121212121212222222222222222225/7-;+>)B'G&Qs&Zc%bU%iI%q=$x0$v."r* i$`XOKHEDDEGHI !K$%J'(I+,G./H/1H02F03C14C15C26D37D38F8?G=FIAMKESMJYON_QVkR`zTnV|Y\_abdeeeffffffffffffffffffffffffffffghijlos~䆻㏾ᕿߝݤ٭մӽ H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲeC p Q$BT R,* y2.򕿣#`$JPD6IA8Ay@1\e" fƮ %\Y7[эt%YG aD&Jgu`&i#0 I8"89NDm]2&7k1''v32W9ȀZ4}$7mv1QyRleJyі/%GQ*8@N*meE]Jt2[;1Ң:uGF5Xu;.mUJEU<`YתHT+[j>1eJ WU5:\_;A=CdWu/z7.xSesWӥγjw;ok"ڞs62-mk+KMr:ЍtKZ}nNG8n3rUMzWֺ5׎nl0Le*c3ʓt/|Yΰ7wX_FU0gLZ5ϊv;3B-[RTL"HNQT$&2Xβ.{gS G@6p-$9ʳ>π4BDBЈNF;ѐ'MJ[Ҙδ7N{ӠGMRԨNWVհgMZָεw^MbNf;ЎMj[ζn{MrNvMzη~<΃pl,~pWZ)zP|h+rGw KYhP4fNCK9GG6:@Wбa f +PGtp =Y:<4azrdH$O;@v@}e8C{GtO;񐏼'O[ϼ7{GOқOWֻgOϽwOO;ЏO[Ͼ{O!<,i{   Y?N V%MHA%5.21212121212121212121212121212121212111111111111111111111111111111111111111111111111122222222222222222222222222222222222222333344667799==@@DDItIMhMR[RUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~} AALP! :Ê/Fȃ7w dǑQ(^Jx%lm @Y :yf:(1h8t,k)5`AJ LԃO dD+`@!2, *5@J U "^"$h$&p&'y'((**++,,--....////000011111111111111111111222222222222222222223333334444556666778899;;<<>>??A}ACwCEqEGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~e!2,iJD9HUbs  Rq"C-803121212121212121212121212121211111111111222222222222222222222222222222222222333344557799;;==AADwDGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~e@(!u "C+FE5^Lc$KrJ}L{mhsؒHf4&%j@s8 V-4`Y% YZ ݻx˷߿ LÈߥ@/vCV+yrʖb,p3gϙA[=4dӝIތt2*kfv]ɑa !2,h4)  oYJ> 99 <4;J7a"3~'/*/.0021212121211111111111111111111111111111111122222222222222222222222222222222223346698<:?D@uGCjJDbLF^NGZOHVQISRJPSLMULMUMNVMNVNOVOPWPQXQRXRSYTTZUVZWX[YZ\[\^^^_aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~eaLc*!E`Å 'Q!ENcF;Ncȍ&,)'0fG_H ˎ.ɎNH9 /Ov6L P$7*;$J5;v.#,av5ۃ L(Ƶrݦv<60 < x4g=lY3wRB>Fz j֭_({vڶΝp7o=F@uIBiLD\PEXQFTRGQSGOTHMUHLVIJVIKVIKWJKWJLWKLWKMXLNXMOXNPYOPYPQZRSZST[UU\VW]XY^Z[_]]a__bbbdeefhhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~qALb*!E`Å 9Q!E^̘"70ē>vxzI&F`޻UM9 ɏCv*[ %zh9Wi7ʯirݰQAl鿮V!PBh6a@ 5j P!n߿.$L!Wڿ$H@p .paϜaMu bˎ]۸s뾍co.\7O7s /\# !-,!>*%1*818=;JCFI@I=CqA7`Q1Nn1A1812121212121212112121212228KM_cfkr~ҼΩ͠ϝ޳[H*\Ȱ!A[@ఢŋ3jȱǏ C(ɓ(S\R$ɖ0cʜIʗ6s@Q JxH4ѧBJUa<VݚP*ׯSYfQ"IJjK7'Һ_q6u߿ ] %㿂[0~L2ȓ-k\sSΠCӜb{E^ dwY˞ ҵӽi}s۷ē8xlg&y..rOӫ_Ͼ˟O>(PP(h& 6F( p ($h(,0(Np@ @C@)DiH&L6PF)TVH  ;bdpghlp)tֹ9`P_P Ni衈&袌6j'?l9*覜v駠*JF{ %*k9z* 掭kjh@6™⪫0vlPk,bjzzJpヌnym$.'pp9$**pgn 太J1klrq!L hOlor-1_f؀6874w:e˗HW4OwulykV̝Ԁ/ E4/t Uătxs^1b\5 (U vu<8m .z9,sH A7Eǃ YvHo VoɅRH SQ/mDoI!).u&3Q09kn.ߏ>Љ{Rm/ݢw8ms @&-j 0 xn !h<90MJ ַf̓W$_k9d N"6-"h& dzZHEAфKveq`D)21h Vw841ZkTbHGaьụXB/Q|BjD4"G񌋌EIZRQ%79F vBZ8YLBM)K2:ַ/k|#Ѧ6ۅh \M& `n/B>׶T^s|9 ӈ>l sg@Q 5z ))g]!R;f:tŢ&cͧnAzIFJUSՒ^=5ӪU|+\JV6 xͫ^׾ `KMb2֔d'KZ`!z hAњMj;[պ-l[+u,mspK\lBq\mtu 0 x Q}u> {^!hH̛7/jU!] :lK`$s"At{Ên8 N7[G ^8F+,CQ! :8HN;JM.LeXβ^.S^,2fNѬ6ns[lF9r$Eφ3)AІ#E3:r%?h'FZMtIg:nrQ}\ pޥ=@02]TL=iumՙp=KɎ(U=J[%@:maϑ44>aYi?]re8:70Em=U}Cf7IO w%FG3\8#.qQܻ8ƅ7cCt$oS c)M<4oww$_@4x 3-yr5 IM4̡hQ5fj; g-8vכI]v{єM}Nt?>}ְv{|7TH9Wc@7@7˯O3.S~gM{P70Z`oo)Oh{8ʾ%Ɂ|ѹ;>髫ǹhQaQ_+5Hu=S2fxYֲ)=#V2Xx E% 1<;R1 ؁ "8$X&x(*,؂.0$p ,28DXFxHJHAH6#.#1b/$ M؅^`b8dXfxhjl؆nd5 810,3Xr8Xx؈8XX8'T%҃x؊8Xx؊Hv~x1DzUS/3 ʸ،8Xxؘڸ؍uʈ/ƃ,=Ȏ 8Xx؏9؎26X5bP0 0Yyّ "9$Y&y(RBE;R/r4Y6y8:<ٓ>@B9DYFyH?iԲ'.i0SɔVyXZ\ٕ^`b9dYfyhjٕT锦b8#Rvyxz|ٗ~9Yy)(}2]"s)(9Yyٙ9Yə_b?=C59Yyٛ9Qșʹٜ9Yyٝ9!2, *5@J U "^"$h$&p&'y'((**++,,--....////000011111111111111111111222222222222222222223333334444556666778899;;<<>>??A}ACwCEqEGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~e!6,0 ;1111111111111111111111111111111111111111111111111111111111111111111111111111111111222222222222222222222222222222222222110000////.w..i..Z./I//?/0:0050000222333444555777999;;;>>>BBBFFFJJJPPPTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~lH*\HP Ç#hc?3jDƏ ;#(ZpDYYNUPTLL[8Ie8Jo7Q{9Y9`GgYwjvƹ H*\࿇kHŋ3jȱǏ 7N Iɓ(S\yq$˗0cʜI˚8sSdϟ@ ysѣH6,ӧ?BJjJVjj+ׯ`z K,ԱfӪv۷5KjݻxB߿ LÈ+^̸ǐ#KL˘3k̹Ϡ9MӨS^ͺװc˞M۸sͻ Nnp0μУ~ سk@O~w˫_Ͼ}˟]E!(Ͽn |`g@跜Fz ~J{b0 t @@'\p5]r~(dy$`&r@`1x@5?rCY^)%h J]A!4XP2@)h}**H /&4F AA|gt \At`k6for!@n駸JJ0jl*(*^u P" BFK\ ɀ:*"x Lcv(knf fRB8V@itȞ; 6` b'xPW,JZǪʁ{`0(Bw 1t.nI@dL:QH#-  ' "4/2B:(!Łde1bYP$D&M"TR'Sv|"VMҔ`:hpgϟ=͍4W7q+|Ov邉Q_$c=^S+.V.]vRZ\NU÷nٱ#p`u߲Eed@lj@˲F۲59=#EVB}ToUvC./"0 !0,0 L?111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111221122222222222222222222222222222222/0,/).'-%,#+"u+!j* a*X*O*F+>, 4-",/ %.$%1$&2%'2&(3(*5*,6,.8/1:24=67?:;C>?FCDJHINNOSUUX[\]cccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~H*\P#JX!ŋ1ZȱC C(E&SBDeB.cI ̚-oLsgɞ>C q(ѣH*]ʴӧPJJիXjʵׯ`ÊKYҺ+ΗȺ{XwQ`{7^~aWo{-w(^we7ʿa|M[?~Qvu.bً⎗ݪxi{      "' +!,","-%.)007C8e<{=];S9?5322222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222121212121212121212121212121212122222222222222225=8H:[?qCJNRW]aeeeeeeeelpunifffffffffffffggijnsyփ͍Řݵڭ֡ԛӑԍԈՄ}wqlcYJ4# HrÇ#JHŋ3jQ7 ~\mEȎ(S\ɲ˗.GFI8s!͞ oŞjFo+^0 ׯ`Ң C Ya3ZRMt}>mE mb [Ii r,Ahۃ- [4;#c,4 CA[ wVW2^&#KϳYZ ih4-cΛ۶EJ<=+>̹驖8p+t}qjz(D~ZG~a }`V{H3fv ($h(,0(4h8<裉)DiH&A0)TViXfDjA# )ihl馛Ptix|I'Yx#@ F*餔Vj饘fZ:駠*ꨤjꩨ^JB"``DD`"Ax+k6F+VkrkT -@@ +֫,D P2@.DPAdw ,rPlA&,0/pPP.DmH'L7}N uTWmXg\g-47sA=- lp-wPέvv|߀b@'7d;Igw%槗ꬷz爿.{g^ ~onG/XLzco^}koѧ>o/=. ǾqN]'HʼnqP`7A)qq`GHuSHW0w'dA28T @TC|"1r4\Cx&:1q*DJX4(,z/ C4p60H.@kda8A8&| $9 ="#A Ja%7Nz (GIRL*WV򕰌,gIZ̥.w^ 0IbL2f:Ќ4IjZ̦6nz 8IrL:v~ @JЂMBІ:D'JъZͨF7юz HGJҒ(MJWҖ0LgJӚ8ͩNwӞ@ j'Rԥ5vN}Q;R5t*U5"Xy6jD !,X222222222222222222222222222222222211111112221212=4E6I=GwCC\NFaZQaOeWm`~jswۇߤ] H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲeC68PˆB6İ`£?&Q;]EFϿ?T2ѴWY` 4 PZt'Vhf ($h(,0(48|<@)DiH&L6G#1&HLX\v`)dihlpit8HW^|NO4!蠄j衈&袌6裐F*餔Vj饈DS`T~>KD*무j뭸뮼+KYQSDC!m@Tkfv+k覫AH+Eizt8X@ 3l' 7G,Wl <=*GkjBp -0,4l8<@-8`=z$L %Xg\w`-dmhmT '$]SQ.1j|߀nTC,q u@PG.Ww 3M'!w`褗n`CC!ɤ.!-n~ <y؄3Ԯ'|- ȈkI1 gܳ|ODѕW ܧ{WH8' س͂ kBF6>5~@y/_Z |`(M0 էACD`G)u0RH /BHLބ(A#PPؘ(CJXw'fYb2~Q($E4Gd}Fъs X;Pd!)8 D?D:҂h>C>s&BbPz^Ĥ(=!O|7Vnyk*ٱҕL|)IsL].y<ձuָÜ~7D;nws4I:.nӢ2Ym$H:M mÑHueD˧>~ ˌ4}s×P֯ cD'JъZ<C j.j(MJWҖǘ0/-kJө%@ PJTXȲRH/bpO”TJժZX*V5)O OLӖDֲhMZV.5\ֽxͫ^׾HJɬKMb"9d'KZͬf7z hGKҚYPRe-8Ima(pCWwȝNqp:5BsK]7 U` l[څ(exz@Ixǫc˃~]K` F^AmKPU-m Da hb)/=Lbt#.;R0gL8αw@L"HN&;PL*[Xβ.{`L2hN6pL:xγ>πMBЈNF;ѐ'MJ[Ҙδ7N{ӠGMRԨNWVհgMZָεw^MbNf;ЎMj[ζn{Mrܑ !9,o? 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111121212121222222222221315.6+r6'[5%J5";4 23*2%1"1 0000.,***+-./001 3#%7(*;+.?/2B35F7:J<>NACRBDSCETCETCETCETCETCETCETDFTDFUDFUDFUDFUDFUDFUEGUEGVGIWHJXJLYLN[NP\QS^UVa\]fbcjfgmlmqpptttwxyz}}~;@}E@tHAmJBfKCbMD^NE[OFWQGTRGQTHOUIMVIKWILWJLWJLXKMXLMXMNXNOXOPXPQYQRZRSZTU[UV\WX]YY^[[_]^a``bccdfffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~eL`*(‡2Q!E^̘"7ƈ2}.'ʸRHJ^<z5D0mZNL@77ԜkUoUNI?`㥳ڴe) /Me8Nn_ɕX'+k+C Q%1=ziOƊQ&ck(}a">x񁺍+.zΟC>z!u-C.0 !0,l*111111111111111111111111111111111111111111111111111111111111111111111111111111111122111111111111221122222223574909,e9$H4)* "  !'/"5$(:-0B8;K?AQCETEGVFHWFHWFIXFIXFIXFIXFIXGIXHJXIKYJLZMO[PR]UW`^_ghjomospquqrusstuuuvvvwwxwxzxy|yz|z{|{{}||~}}~~~ěħûa( i*‡p!E^\Q#LjKv`H?˜QZq 7N\9o .40ќs^%d5\2nΕtD]:8Y"s g`ի$ʯ΍,g㹳v*-0ʕd\jŅ#G^- N-]Z3wq8p tnݖZÃ'axe ۖn k%s!Nx+70 !2, *5@J U "^"$h$&p&'y'((**++,,--....////000011111111111111111111222222222222222222223333334444556666778899;;<<>>??A}ACwCEqEGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~e!2, *5@J U "^"$h$&p&'y'((**++,,--....////000011111111111111111111222222222222222222223333334444556666778899;;<<>>??A}ACwCEqEGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~e!2, *5@J U "^"$h$&p&'y'((**++,,--....////000011111111111111111111222222222222222222223333334444556666778899;;<<>>??A}ACwCEqEGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~e!Made with ScreenToGif;shinyjs/inst/img/demo-basic-v1.png0000644000176200001440000002054013542227616016540 0ustar liggesusersPNG  IHDRTT{ĵsRGBgAMA a pHYs+ IDATx^_h#g鶡w@whfxG2;7at8%Y7^v6bgn 'ؾdQ Z#0"s;!"00 M4o[[R$[OTU*U_=o%kLDN/ & 5OOi@/tPpV'e3v8ؾ4\,T \@MƮ!')3v8X붱̨Pqvo{x^5.cY-Gb%ZZ,ͳz|բ,7M/-b=XǶ+h|ˉگMQtMz$ߠo..i2-5),ujx4-,×ZYilhIYRWjq9z,=Hյ\Vʪi-mS),Y׿_F h/~NNfd RC>#$ٶ-Y[*P?|g`e!gSSr/oVdepTegˬyrQSg2Kڣ"k܋ô24}0ےkږuu ytF&i>88oծ2 ٩|(m*9va3\WڎqfzEZ%juGyz|g-Z7ʻRRSfi26%8xa֦Y^RϣIf6[ۧdt>4fI"Cv[mQ?pԃVȺT.xwI//JȆz]Ot'ʢX)<@1-+ĩ֨]Y-- fmR"_V E* :L7M*8?U!#:J!Toy뺹_3z Aw鴬j:RPM0:3Xk:z4fUgm&U:{uk74u\q60.Mܭ' 5]߬mU˽¬P~9v\:1*5o5|[v·}e[~b{+Զ|ۖ>_9Rv}Vdo=_@Ob]%FwsVE ĊWz?fG.W<-PC_K v.Е-k g8[wj\WFzU=\t5\˵ayئ-[Zd܋g+pݬc:+ZE7RolS|95*Μyƿ ]C5}_ضx{vOi&ZLSce;9<b\V\:cc:F}n*Rݜ״#P{aIn=qGu'̷D:M֝>TIb:tiWuDf~8OuO%\ @G4 pTp@GTp@GTp@GTp@GTp@GTp@GTp$f=W6<95gjibF& k6T,كilWⲹXEM~riIu>h/K*RXkjKJU!d])[?P΅i, u8G*ԅ{I\ vwe6U+M,3&o/rP-ʺdF6kܔzPPɟXUJ]7XY *zĴ#d!/?W)Rt ]3wrTM;f*vAJrZE)\ NU7vw\ӝ-~I&O;O6 ǁ[sĴ߀R{dN/fX->=yܸqC&&&cczA|z>C9::3k||\&''ejjJ&&&X}SJޞ\~[q0 t gϞ칅@}\zU^}Ur劷`{0:Koo۷on9 ?\\v+j Vr3-gCy׽*WDIݿv3_ܜ75Wo۾j*p?w5ό0tS lf*XߛaJ }7r?aB@0tHחr? ~0M#_ʯ~>̌W_F07ELӃw}O>QÇVh0\]BAבv3f䗿%o/aF&oyKR7 }n4*<=?P_}}XnVǷޔ7jӕXn=0:5fzӟS4ޖ_o{TUw?7?eZЩӅ.G"?G*wjƒ}7OڔhJM37G àѷ>R馿u;c `4 aV5Z?on-^koțjkS?>M H |4ӆ_@5ʏi][LTr>'OT8d>.255%f{~SJޞ\~[q0 t gϞ칅@}\zU^}Ur劷`{0:Koo۷on9 ?\\v0 @}TUs玙△@}^SW^!P g}/dnnLqνؽzab$P`X]@au*T@GTp@GTp@GTp@GTp@GTp@GTp@GTp@GTp@GTp@GTp@pizC q9991`YurrR?t(U0ZDz'7oޔ7nĄ7~lL//1OO>'Ol-\.Vjz?2:0՜*2;PGTp@GTp@GTp@GTp@GTp@GTp@GTp@GTp@GTpjZ5?bj,-\,e)5۪R\sws *W6SWzAC/0|Nu_Mi-`բ,墚._X|;?6̝3Nw~}ޜ/s:Yϋ\MjNmz}=5E4Yx7Oz]Nu:߸>|jZӪۃ3k*Tns>48cPˋ82מ2S"tٺr(v)){)s_KjZmW)]K~>5Q_=O:iF뒖|.v3,G{+ 3B=beUٗ=JPzh'bR*[;my/٪ϗ\>]>W㼜cf7:꣥}?ƣlUVc#}~t`"e?w(ʈҼk^o{:Tz4ۨeFVG混!Dlk;1K!kOۯY{GPl'cgh;jGԂ:Z2#S}Bh}_21;:JPR úZ/#?_Ed;jg#/RTzj89,{^i*uڮ]++-^5mzyꖪ RItZ>}3/zyͺ]@xA5W^AE57geqթ>jRCo>Sliް={I֧-MioYْn|2WzuxMµR%NmęTw\/O@iS:T5@ݞ-e>2tn5WԾ76μ~-i }a./H eSɌlւ>o8O?fuP:iV34Ln9[Y'6BRJNMu`4[q/ɖ¥v́?ql_ :L'A eF6ZHt7~E=->}߄s|f濮&T^uU:,1y*Ω5:ߕ\Bwe?_K[4maY^/맵_G$*i]hZcpVA>!L0=9QW^EokJssSo%jjq =W Z덧({v%.Й^e"vD2M^}lnDs4QTh6~,4,N프jyq5-׷~* i_7U)V3~r\7bb.j@Vu.FEV]쾪~7VjoM*3v{^UtyjF2S=Ωv[bE63RX oֶܼAkOM[O׷eyݬ3/SX_3}^cj fECW \|u76c7RpM~&?!P!P!P!P!P?>>C9::3vtLMMĄ `T:L?ܸq Q"O>Jfgg U`8 G=~`ƌZ?۷_|]B+PuswQ~sGTp@GTp@GTp@PV-ykȕ͔n%CZZU).ڎ7z2@aaS2CՕv7d%a P˲]JJ^)mZDZΩJ6gEYUִ΢~U{˰{ UWKRT K w5!Ɋ4V**՜W*Ȫr73 zV𶹿di4*7TIf6e7˚ue#/ipA\tNJZJmtzLM-iĴ̨= C-*\+Y 5ûyO]Rqz}pk@j3 չ o*P@MݓL$ن⺔$-iN^Jqdnו`.RJf$tр:v%?cΛaikQ6kWk"QkIJ&?-lnGƑI.p&~SÇ277gg)#P!P!Prrrb60b<}mz?`t ԩ)ꫯ믿JUo~0b}T;>>C9::P|]00c Fs@#*8B#*8B#˦gG ?R1>aIENDB`shinyjs/inst/img/extendshinyjs-params.gif0000644000176200001440000022223313542227616020355 0ustar liggesusersGIF89aW $$$'''000;;;CCCSSSfffwww! NETSCAPE2.0!d ,W Y H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μУKNسkνOӫ_Ͼ˟OϿ(\@ 6`@@A$Av! DPM`(~1(.Kh2θR 9cU\JVA)"H@D @!M@%&b8TA]9љ Z(60D@!Y[ړ(B%!Y(VJirf:j&Xpm '6hlRk(;+ˬZnZDhnV ut"0F$&F ˩Ap ZiR#k(qN 4{6K4%$G,vg"O%e:@<4?Ds cGSIC t_j̱@75O6AmFL m +Rv9r,+g86Y/4 Mp3dw Hx'׬:XȈ]p1inDn/qB ^usl($3Bz##% m-4UG|f\+k/N}Jơ!dqEa?bEN$nL#8Q: JM5|#;?f4PRfvY l"&+$ Od*!9"oJI(8h b*tXdHE¨#F&%7 Y\ XHsJ E 3 Y@Rx#nsԣ!%6g8?x9A b9J5H.h10'4uRvbK,i]FsY12 @.[=,ڶc]:ΟC3NbǓD\".i ϣhP:Ei6GuqAU}WY X2HAM 5~B{' #{0svihbWhN^1 ,$Z`Di$gI,2A A y2(G.M'3$KG12&}YnzVnvx^"va˓$Uii:сlӚx %*稤T^2%`hLZۡfA>3Pi.e_2AP%\D*+vhgf[Ry1-(ЁQ[lfK`> 1/aF BLGjfar K6pM`WL$lZD,Iu,$l(,0,4l8<@-DmH'L7PG-TWmC$+QCi ^mObw]ѩ׵unno XAuDDq<$DsA.qN[s6CmmQ!1x^YrQd>n\ H}{w,A0`٩lxۢ+f #2r3F,"˫]ǜ~d&t?63l?>#L EGϰ ;w{1=kV~)/ X\h1s& 10f,5Sͫ^Wdrq -< דHL&:PH*ZX̢.z` H2hL!DX1I k#Ј)dΎxc*TjZJ4 7/l$)Є"\ꐑ" cꈡR\;B0 ThwV%/ɃPf *Y$C] "F<2#&+caҨ.IVI5d Jl)܌%3ii,<蘈ll7 @zy4iD EFʀ&Ҷr# / *\R%ͮv]]W#E.HaXDluߺB$|G wK걸/H*#ݸr(t,Q}ߏ$" /E3"Š+|a նJpb"WD/#J:b~8.!DkakD ؾ@~ C x2\i%a$WNZ! cqO.ɖ6;MH GR梵Hg& fkyRr,g<\~HqfgAue=JցXa=cZ1Yְ^MUVհ V-π&svkBz(iuvC2z1L>7:Ŧ_hllGhFMqgιr}nC -- 6ZAkϻ$Ytop1M`ܺ~P.n7Dl q}cfxrrk&ȡ|o%/#rr!vws+1A_>T#2“Nl5դ>q3fB{{nt$]:ѮrGVw{uĎr]`csם27tgfvދ_;>}wy+n~yxG^O^1;7}Osŧ>{c=u|COSbca-O{o˞Or1=(ǀb}p[#JğB`tQ&} axv'y'z 7I?;B|"Z }&}~vz4w z $JDĒH̀t9 LD7~ xl{}0~G2" ^G,bIZ4KGy׀/Ȇ׆OtU|hk"u`D^M{QH6yn(q$ ^ȇ~Lg,LjhhjȈa~JX#"zu*R+L1ִH؉asLȰŠgȇaV4N(LM؋؂H8msXP8}{DHḋ.W7ixDpx}q&ǍHqr}  :qh{NG)ipxɑ5 3א2(AQ)j׍XwNp8f%96kLٔNjP9PUk@ 0 \ٕ^`b9dYfyhjlٖnp Ġpxz|ٗ~9Yy٘ipU 0 *Vmɑ8! Gf}֒GHi,=y#90)#yɚi* x ιÅɜ"ә-ؙ'ҝYY*9#QryII'Yqͩ9 ) wz$ ѠF* ҡ:* x2$z$&zE* ,ڢ 0j t9ڢii8J*&VFEB:DZF ֣JLڤNPR:TZVzXZ KIzcUVW*iWXgQWi j*oq suwJyʤ{*}  Z}H$0XJhz{t0#C(Q$G!Z !_b98ɀ@1@;ڦqSIG=z+Ċ=sV*@C %uC:aA Uڨ~PS02qCZ[Z:*J lZmufA`^VX!2, *5@J U "^"$h$&p&'y'((**++,,--....////000011111111111111111111222222222222222222223333334444556666778899;;<<>>??A}ACwCEqEGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~e!2, *5@J U "^"$h$&p&'y'((**++,,--....////000011111111111111111111222222222222222222223333334444556666778899;;<<>>??A}ACwCEqEGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~e!),<21111111111111111111111111111221111111111111122111111111111111122111111111111111111221111111111112211222222222222222222446688::<<==??AABBDDEEGGH}HJuJLnLNiNOdOPaPQ]QRZRSXSTUTTUTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVWWWXXXXXXYYYZZZ[[[\\\]]]^^^___aaabbbdddfffhhhkkkmmmpppqqqrrrssssw{t|rqommmmmmmmmmmmmmmmmnprtuvvwx耻SH0*\ȰÇ#JHŋ3jb ٱɓ(S\ɲ‘,x0˛8sɓ͙msG48q*]ʴӧPJJիXjʵרGu'_HDmۖmjpʝKݻx˷߿ L]֊%/&MjUKv˘3k̹ϠCMӨSZb5DNcvU Nȓ+_μУK?K`\c,[`Lw);*TLž˟OϿ(zJ-63AjUC%0ȅfv ($h(,8% VàL eۄXb P<@)DiH&YdAA M52%Lv`)d2Ia-HMe /$Rtix #L6k&d5肊y&袌6 f"$h9 Ch. 覜v)r5,tc-~ꪬ$D)BHX)뮼)VCBS(ޙ(+xEfmFK+ɂtKnIPdžѸ+/ iBl.7p ;WlqO{ q(Lo̰02>kr8m@1G7I_3OWmDQ6Cl8}'8-r76λLV{mc.{n [l裷njF;@ {m~n8*ithrrjb Ś 'P/~ ̠@FHZ∘/oKIӄ³4d#L.F8|$lo<9OzӞ GH⅂ynӛ\8̡wv$1 eb&:PHE*f64HbP-lqKaH2hLx }g1IPBtx̣>G Q 1jʉ"F:򑐌$IB>#ˤ0!=,   ]%%,,00111111111111111111111111111111111111111111111111111111111111111111111111111111222222222222222222222222446688::<>??A}ACwCEqEGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~e!2,>sI%)).!<0$V1(y2.202121212121212121212121212121111111111111111111111111111111111111111111111111111111111222222222222222222222222222222222222333344556688::==@@DwDGkGIeIL_LOXOQQRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~e(p)*\(PJC@Ded0F=@RI#^xr么,5ʨHLˁRRƜ_C;S~ȃѦɁG[{" oݹ2>9Tn`e n,;m׷dUO@2gYXn f%a`SӞQF8bI1'ӨG\ͺװc˞M۸sͻ N⿙]as/>7*=uNq;AϮ{IAjMC^QDVSEPUFMVFJWFJWFIWGIWGIWGIWGIWGIWGIWGIWGIWGIWGIWGIXGIXGIXGIXHJXHJXIKXJLYKMYNOZPQ[ST\TU]VW^XY_Z[a\]b__dabeddgggijjknnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~e ^*E`Åe81Š-&ĨQ!F;JH H92D ť a'@ҥ3p'=UIrQyIU,rS{s.#0e{2$+ 4U+Wn֬IXe2{PL׬1SWaZ)cu!=m+;Fb߻7s†&i ;6m mޝPnӴk|ƍ[qC\ytԫ[m񺌀!,L>222222222222222222222222222222222222222222112232527292A1Eq0F\0BK0=>1871;71?61H70Y90g82t8384:5>7H;S?^AgFlHsJ{NQÈUÍ\ahutwsgsUnInAqJ5jӫ_Ͼ˟Og_^TYcefTm'J(xɃF(Vhfv ($f (?fNld[7WT<@)DiH&L6In1n5Ė>2 a˘dihlp)tixKXLR n݁(4L46裐F*餔Vj饘f馜v駠3Ʉ(xTlٔVTь4Bj뭸뮼+ +.W/;S'U@Sfv›û򼿯?g;֫$;(>j0G1K)ŽUPadJ6HBmESg*O%%aA(ВVP@ tU v$P>,610<=1`$N]2[җaG ѧ? e#U! IBL"F:򑐌$'IJ2RGRW*<4AML*WV򕰌,gIZ̥.wJRj((3¨_InJAfЌ4IjZ̦6nz 8IrR3h&);蘳IJ[E܁ ̧>~gJЂMBІ:]юdY=Q\Њ/H=:4X=rvH]2Қ$4*dCG=؀2ڴҸC=*$F4 ?c3%t\ Q3aUUelP4ըN`C2J׺xͫ^׾ `K=\ Ҁ3 &ͬf7z}e0ጵzU?}k2xaYкlg [6"m*:^袵 pKₖ iէEpKZe*n[Zǂ5Р.լvu1ZhD+0t/~ِ 2P}k/rQ_ڂMTBp: U78a.؂fG`6ET TXCL۸&Fbu 0Wɐ2`HYp3%$0>q.{99ޱn fx@+ `IB Aq2SlU8=f1*WYJf!.dx sH'y,LgBԃeŜh3/:tE ! $b MsZÞpT{U3Ú1P !x;g_#ྫY}2;ۯfo -depFt}FB7},\yA@0 vP{;|fo~848 ^@IvvPꇛ]]MSKg7y_:_NZd͋tc=5ot|Sznnka2@ޱeoڽɳU5w7yOՅO;G'O[<0{󠿆COқ;}g. gww؞%HI\5kO>l` #a$J-\}`CDP A?:h '~XG~+hHK;}w0 ~$k: 0 |2{"X{G'qPwu01cg|6lo6|·@ +kF@T@ 7#@hw+ 8 >z6[PkxU#1z2j5Aoz .07@\f%z%r'w /faDP}e0wjhh} @ r\؅=Oʧ'@}QXfmGEfV]v3"Hh+PHX‹&苒g8,Ȩ]83GڸX+ָs0v]dT2BAk긎(vBT8$Ď8xvFʘr2Cv C 3lYX fǏ i@9vHdwh)Y@+Ys9X(-Ja-=Q(p''}-d5ЄD FF) z ~6xTYPtY+Xm8ei@7k.f=) sI)xz1Y~鄀Iux,i+y)!%d~aG i{jIxQS9@[ؘyAx){ٛyَ7șٜY9+yiʩyY9X虞왅w)wڙ{(6QcHҏ9I8dDTى7YCd} ]~G0IcMH(#ZYV1؂Æ㢁CJO^`q<*7>_%0e) +7fzMؙТV 8K( k) TfmT9 xkʦXLԧtӦ܂5j:tR+ڨMӦʧz6: ꩏w-i$+:<'Ȫ\GڑUjw&y퓫i?4j2Y:ъ1-z ٲ܊0ފ-3"2:,꺮tΦoj nIgڭj2Zz ˰]С_ {f밨i {0Z@6ڄy Az8)[/-zCڰ0;=+g9Z0 ȴ'zTz⺱2~c A2ghj:uZ`lkiƙ<뱼x1m 쪶 B0ڸh5;;:ga;a֋]'9PefF2 pb;&a PQ;7% 1aE_ P;[{@a ^hPzPtػ۾Pp@u|_%a]b~wP L <\|  upz@ ][R[P:<>@B,<]@     ' w **//11111111111111111111111111111111111111111111111111111111111111111111111111222222222222222222222222222222222222223344556688::==AADwDGkGK^KOOPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqrrrtssvtuxuvyvv{ww{xx|xy}zz}z{~{{|||}}~~~ !🏃*\hpÇBP"ʼn/>̨aG!r Ñ$QTeG4I͛8sɳϟ@ JѣHj41PBy@VZNMz اZ ,5jw:{`Ŧ:x^IrSbyou~ymna[\N_FpP^ɜnֲڼœɨѷ H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@SJQ(tGJi§TjY&-U*`vݻ T02E7S]uX#p@)2(zk+UmiEjv^ڀP>%K6,Pez'͜*`'&8V#мTh%}A Wnv }=wh A-w 6 Vۀfx!v(`(,bD@h8<@)B PD&L6P I QViXfSn`)f]iheШp)lJsfimN砄TS\ )hFJf2JJ"jOZf`R% cŦklA%f|@) P +`*PA9`#{6|eg)k@t*6@ fb`0¸F,Z*~f/p*KpS՚)2;Z*P(NΔͪf}60P)Lˁ9o=[&l.LP@M-)m)_qb;Ђ@js)8*=mx_լ,=3Cz+p҃C F r~ y٨iF`''7G/ԯ!,]>2222111111221111111111111111221111111111111122111111111111111122111111111111=5G8Z99686756555556566|76u77b67O46D25=149035033032031/3.-4./8-/;-0B.1G/2J15P38W@@gOJyUOYWVcXoZv[yZ|YVY[]acdeeeffgiknx܂׏ЮǿݨסӛЖЗH*̦Ç#JHŋ3jȱ!Î CIɓ}<˗0cʜIQz8 %͟@ :eIӧU>GCy, edɖMِ <.HWGDJ]l *Ge=h^c؁. 9?QߖC KoS~Pe%)TˑԜ탒h\{RVTaU(!'Pz/`%믯^'IsG8 Ճqȳ2pFξ}T4J-;;N+O`丧T@*~ w%Y.' j0h'JEZeMV9@yj}=\)Ag3ÕhtXc%XO!9`4p]i/eep)tix|矀*蠄j衈IƢ6裐F*餔Vj饘f馜v駠^'\B$4#*무j뭸뮼+8" %d‰DK'd%Tbɵfv+k覫v[ d ,rCC,> 'h"l' 7G,Wl{o'2-8:8ʢ+,0,4l8<@-*2ΐdN6{2bXg\w`-dmh\K8t6DwO7z5IׯA[t۟:OsK`}#WAE0GAuW THB +kȾNOz!x:z9N0"ʈ8@"&0NЊE/dsG 5$HMSP}` ]Hƣt >P:qa*\H:Tu$#P$"PXDb!pFᰈMb:wq &ͬf7z hGX@u%DAֺlgKھP-6 pKMr[{Kᴫ(T `XͮvzmunSA @LMz| \8`T1:yE!>U60PIA`Q\ OH;U=x'8NOP=q6p *[84v.9,p BBG2Mb? JU6Y`v){leB ~`B׼1^E6nFgt{5g:t-b @QQ8јDz kZҽ!-%å{d&+`/"ƴr,& Ԥ;BZd\aq&-pA 0!{~B蔝jwW^ls dzzGaΓEGn[pi&@;t>ȿ]h{/ʻ~Ha= 7 Tgm^s0-<᠋A&yĈn$E p9+Lߜ ;|z.9Hhh>E&SG uA}]%a*>g#P v@ri뾧k': nw@i (<9Oe( 0s1%y讎%WֻkZm{=]O7a3/!>'2W ;Ғ"BB-=Cp=!GX']Ra叢!vw" wݣ_ xT: h8wW#xV!(ȱ qRw D 4)!0:<>vAPIK0i1DHFhW?POQH A%NhZC 1XH!& qh8]8 !!Auw(yHDGv?10E A~8X/pS`5`X1qP `8Ph\ȉ=Hb4QȘ(͘8'vhhڸ؍Dyg(vb,8-HHjWH7'(Aqg7Hy3G~%E~wX7Ӂw#{w4) w%X~0T(.q]x0Yǒ8:x>ɓ@?:D$w8JӔEP)VVyXZő\y`9k%dy`Ŏh^%!2, *5@J U "^"$h$&p&'y'((**++,,--....////000011111111111111111111222222222222222222223333334444556666778899;;<<>>??A}ACwCEqEGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~e!, KZ1111111111111111111111111111111111111111111111111111111111111122111111111111111111221111111111112211222222222222222222222222222222222222222201-0.3.~6/n9/`;0S=.C=,7=)+;&"9,#?3%F8'L@-SC1WG3[J3_O3eV3m\5tc8{c8|d7}d6~d6~d5d5d5d4i7{m:wq=ru@nyCj|FfHcK\MYPVRVTSWOZK\H^F_D`Ba@b?c>c=c=dh?hAiBjEkGmJoNqRrUtYv\x`zd}iou|?H*D‡#Jdpŋ6ǃ7~$SZ4yʗ Y &X8ss`@yFrSKI>J3GOZUU^U: 5lGY%۶pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3 ϠCMVlC%Xװc˞MkYRlE˶߾UMq )ȓЊq}C99eOW]wODSfIˆk -`rj/-9=QfJM 7IY|1w1y!& *5V2mRj2lgΤfS@!2,*" Hs%&*,./01111111111111111111111111111111111111111111111111111111111112222222222222222243547596;7=8?8@9B:|C:vD;pFVK?QM?MN@JN@HO@FOAEPADPADPACQACQACQBCQBDQBDQCDQCERDFREFRFGSGITIJTKLVMOXOPYPRZRS[TU\VV]XY^[[`^_babdeeghhilllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~eHp`a\Ȑ`9i6谜+)1cÍ=jȅ \yR`J*Y|)#Lsr&JYhКCM%E .F]!MQJI).u^T ʕalZcٶ{)\T LJ]\xKX]Nl%@/)t/Z|ErLwoB&RdyOk{^cWNvGt [F5G|YX)g[7;8ū69[`GÏo@dw^%+$2ˉoz_2^K] vQ@! ,CCp$Io%Cy%<#4(4-3/21212121222222222222228>Jgbr||}~ׂڇߋ䓵뙻؆teUܿJؼ<Ի1λ&Ƚ¾ (*\ȰÇ#JHŋ3jq"ACIɓ(Sb8P˗0cʜIs!˂5sɳ̛ 030h|, CHի2 `T:dڕbӪ]{P3#P5^ j&T9s,_۔)'&ǃ%P٪^m1p "̀ 2L5 r fj.wiSn,l}]ҩ O޿Y_O5Rb;LL1pq,p[p  dםĶYh ze FҖexi&1bu s|E%TyCqםf2FU,B]nkԈ 6vC័/!CBVRATaRh䛫!F_p0)7bX\e9>8aYrP)pVd4*4i`7XR#SYpEyYNjq0~JVdmvdFswi*#UM+:k {D~WynDa*DVWtollL@% 7G,Wlgw ,$l(,0,4l8<@-DmH'L7PG-TWmXg\w`-dmhlp-tmx|߀.n'7G.Wngw砇.褗n騧ꬷ.no!o'7G/WoWw/GL觯췏/? H@%L?0 x܀/Ƞ7z GH(L W7n =wPǣb"³ ?xfBhD4P<D\1Qh<'l[@xƱL<(7ыr"f⑱xsH?/!g!2[[XF=BkxIEя&;L6Rx$LCRUce+ ˬrnFNr,d+_Ba1(sQk34i &#bbSi7NQڜ,yΦӕl՘! LS"qYH!=i< bMBІ: N$Z F7j (Ғ;JW>0 bJӚJO{6ͩNA О@ PJԢHMRԦ:PTJժZXͪVծz` XJֲhMZֶp\J׺xͫ^׾ `KMb:d'KZͬf7z%J@ҚMjS,@ͭnipq-VȵX\ ,̅k D]uKݔmڽ[[]񶕼5/[ыJUZ{2bZk2oZ[20Z L2 VY<2#JaeBWĔEdUWeR!q&.pWL"H\XqL*[X2@9!),*1111111111111111111111111111111111111111111111111111111111111111111111111111111111221111111111112211101/-.(p+"P)8&&#!    $*05#9#)>(.D-3I17M39O6;P8=P:>Q<@Q>AQ?AQ@BQ@BQ@BQ@BQACRBDSCFUEHXHM]MQaTXd`bijkoooqppqrrrssstttuuuvvvwwwxxyyy{zz|z{}{{}||~}}~~~åŒԥ媶άĭî°¿SLL^*LQ߿2 #&q$‰*ZLQƋ?&7L);@D?F@HAJB|LDvMEqOFlQGgRH`THZUIUVJRWJPWJNWJMXJLXKMYLNYMNZMOZNP[OQ[PQ[QR\QR\RS\ST]TU]UV]VW^WX_XY_Z[`\\a^^b``cbbeddfgghjjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~eHA\Ȱ R:3 D9v2ȑKV$QÓ2m#eY@ѳƳØ9{7hM@CMTWX EZa⻖0@iUh6+hJI(Pk5hW Zǐ#Ket/c9eϖAw~洦K{B'a5xjٴ56ޮmywñcM饫[g1 v55XF!9,8(       &B" c&&)+-/0111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222333344556688;;>>AAFFKoKObOR\RVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~(P*\ Ç@!E/BL⁎3l8Ȓ9NT9%Ha<8P&ʛ8s ?> *Ϡ7"-YtiON5A)B>;*ŚQQulXf{UԮnպ4 !, 0V2222111111221111111111111111221111111111111122111111111111111122111111111111111111221111111111112211222222222222222222222244557799;;<<>>??AAB{BDtDChCB]BAUA@N@@H@?B??>??9?@6@>3>A3AB4BC4CD6DF9FH;HK>KNANQEQUIUUKUVLVVNVWOWWPWXRXXSXYUY^WX`XY`Z[^]^```aaacccdddfffhhhjjjmmmpppqqqrrrssstttsuwsw{sx~syq{o}m~lkjjiiiiiilrx~˄҈ԏՕ֚מנסססססססעעעעעעעעעעעأۣݤޥަܨکګڮٱسض׸ֺּտɼɸɼ Ϟ*\ȰÇ#JHŋ3j=}m\6lآQ[ɲ˗0cʜI͛8sɳϟ@mFÖm7}e#jPJJիXjʵׯ`ÊKkbټGl0c"ʝKݻx˷߿ L80T֊Xǐ#KLxf(̠CMhdٴװc-J7jgͻwoQMEQУ+g뺧n{ /߮{Mk>|+}/ŀ }%@7 V_E@Z{ h^^ER$bu("/]E 6(x>>???@AABCBCEEFGGHJJKNMNQQRUUUZZZ___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppmryfvX~K@9532222222222222222222228HW_ceeeeeefffghilpu{e(О*\ȰÇ#JHŋ3jȑG;(ɓ(S\ɲ˗0cʜI͛8s$9G!dg躣H*]ʴӧPJJիXj5jѯ#{*(:tʉK+۷pʝKݻx˷߿ 6Yvړܸm-˘3k̹ϠCMӨS^͙ȆdjѠ={挙 Nȓ+_μУKNnhѨN"F 3c€嫽˟OϿ(|'1@wTPQE0R -dv ($h(,∴b 0<6t "S7L(lbH&L6PF)TViXfUJpSP@Z@3 *BOp)tix|矀Y9$3JF*餔Vj饘0$0dÍ1l驨ꪬVJ' SNbjRI-@#w#LF<8TN6K҆+I,<͘=xx nk̵n6lpҩ8/3 <"Wlgqw1pB=?i*s0t.ϑΜ 5,;'2L7ݧD;l3Gǩ\ 5NĶв?B(Ä eN)"RORh]]4(-i ;-/>s6*35H"~.:ӂKmt. ŤCŭnꊜ¸"^x[Js%]5CH썛0帞<ŧXCRRL|اl8-"[߸KQo&2s(NyջS~b!#H :p8?R(N)q I28 2"){SX:\2,İ4Q̅G"H1qgN,,* iWY2bX(̂5F:Q_j%/;pR,f[Փ D$F-cE/!"'IzIVBE F94ئ:)dMjbS*ZkP(TfӣiMD0IbL2%0J$r&T ̦6nzьjt>??A}ACwCEqEGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~e!2,$  !!!!!!"""""""""#%##'#$*$$-$%/%%2%%5%&9&&=&'A''F'(K((P()W)*]**d*+k+,t,,|,--..////00111122222222222233333344445555667788::==@|@BuBEoEGiGIdIK_KL[LNWNPTPQQQRRRRRRSSSSSSTTTTTTTTTUUUUUUUUUUUUVVVXVVZWW[XW]XW]YX^ZX_ZY_[Z`\[`]]`_^aaabbbdddfffiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~źȻ˽  *>??A}ACwCEqEGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~e!2,!11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122112222222222222222222222446688::==@@CCEEGGJvJLoLNhNPaPR\RSYSTWTTVTTUTTUUUUUTVXTW]UXdWXjXXnYYq[Xt[Xu[XsYXlXWgWW`^VZeUUqUUUVUVUVVWVWXX{ZZx\[s^^oa`mcbmedngfoihplkpnmpppqqqtprwmtzlv~hxezbzazazczh{q{tzwz{y~tqokjlp~s~xvmihhjjlov|¸õĴŹϱHAP\x0!ÇB|(qB(*ҹA2i<K~i>BBEEH}HKuKMmMOgOPaPR]RSZSSXSTVTTVTTUTTUTTUTTUTTUTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVWWWWWWXXXYYY[[[\\\^^^```cccjfcpidzldodrbuav_w]x[xYyXyWyWyWyWzWzXzYzZz\{^|d}kt{}{yuuw{}¿¿ͽԹڶ߳=eԓA@2 g.z9(ˢ= ,0HQ=cɐ'ǁ_"3 !2, *5@J U "^"$h$&p&'y'((**++,,--....////000011111111111111111111222222222222222222223333334444556666778899;;<<>>??A}ACwCEqEGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~e!2,7,  ;!X'#s,(/-1011111111111111111111111111111111111111111111111111111111111111111111111111111111111222222222222223446698<9>;@9?:A:B;DwH@pKAiMCcOE^QFYSHTUJPWKMYKMYLMZLNZLNZLN[LN[MO[MO[NO[NP[OP\PQ\QR]ST]UV^WX_YZ`\]b_`dcdfffhiijlllmmmnnnooopppqqqrrrssstttzupvmwkxkykylzo{r|w~~~5AA U3P!-C sĥ*R Nu]-rV4ʝKݻxg._m`?gU6:dž >nlpeʎ/O.MގxSF=׭ɞM[6۸q|Żw邧!222211111122111111111111111122111111111111112211111111111111112211111172B2K2X2^{2ee2iV2[D3R<3L83T83c84}9494:4?6G8P<\AhEpKxOTÈYɍ[͑\ϔ]Γ^Œepv||evVtHtBt>s=s=v@zFKNQVY]acdddeeefghmrx8p*\ȰÇ#JHŋ3jȑǏ wpɓ(S\ɲ˗0cʜI͛8sY<E#yn^sH*]ʴӧPJJիXjʵT`IRlphaC۷pʝKݻx˷߿ 6m8b~j\o]FyZ˘3k̹ϠCMӨS^ͺsie!Μ1[Lٱ Nȓ+_μУKN2r^; cSӫ_Ͼ˟OϿ?}Se7 w#)&Pc91" (D(Vhfv ($h↠B),4hFP)haxŎ<@)DiH&L6P*-:sM8DZ0s^Q -dihlp)tix)-hy 30bIҁF h 96裐F*餔Vj饘f馜v駠7\)cHJ C֬j뭸뮼+G)Xw:֥)pͰVkfzÅ(0*)pA{-9\b2Vd}׍䠳 ,ܨ֭Ty谷<|msmt~yg2K ?ޝׯ?OCq۟n_7fc {a.t]sE/{ Bг>mvܠ E/p0j5qWp8 \3,eP6"T.} >Q Phїh4s ]H2hL6pH:x|U+e 2)P1 m␜H"F:򑐌$'IJZ̤&7Nz'D1SE1bnD $)H1 Z▸̥.w^ 0IbL2L]r2n@99ab@"p8IrL:vnpZFC%[5 vVE xs[ X07mz} 1B X`Sغ7ЛЏ=9|C7~k'cHЄ"]: T>t`Y*}bÎV() 28c`Pw ?`b2r#4({ARloesS;"Wځz@0!&{e9cX\`ɬ_@# 70} x5n XeHT-=@%\eF >ԦF(j#K7 Z_O(0돰5{[n} RcouKJ5{.V{&Ilr}Y+>pw7_ꀫ47}o xU2#|8=qƶ5~܇yʋ@ЇNHOҗ;PԡsOXϺַ{HzNhO;spyxϻnUxtNR+n1"9'O#^ExJHJ,Ek+&y bxFOڇX<16TbТh}e/{$ƴX#׏绸AxAi a}CB AȏGX=D PR KP 'PL k `0,p`h"tp ( s= bf3X,`I 'p}6HE @QXŠ 1s@`Ѐd vvg,@/sW d`h583J8JVNX `M UxYsrgsexi 90=`~tXIx zUd }H.Qrs<؁>hXez9X"p (r5Uxt`cshF 8xNP )}h؈|FAQ (8`7}5@엍h{ ЍHIPP9Aw荾F 9i8 ُ ItّHɏ YYى & I0y*498'9-@yJ()xq as:s8Jɒ5vnanRBTC=ٔ%_[W]q_?a)+eX'\ysm?oDyjuӗci#Y{Es2n@g_p4@B=D]F}HJLN7 ˯YjDTfE x f}hjlnpr=t]v}xzjM֐ |մ1vuX_] ʓ؍- ْ=ٔ]ٖ}ٜ٘ٚٞ٠ڢ=ڤ=ڎآ؂y!,b<i80/?/0;+.:(-8+/5158:8:b96x61312211111111122222222222243R:uIksȉלߩ%H:(Hŋ3jȱǏ C4fɓ(S\ɲ˒.cʜI͚"nɳO~ JQ*]ʴINJJXjoׯ`Wv KYcϪ]6-۷pKnӹv康_?È+^̸ǐ#KL˘3k̹ϠCMӞm^ͺװc˞M۸sͻ߾5Nȓ+_^[8УKN]سk/;ӫn~߷7>m Ͽ?0  8T߃m† v!vE$"# 0 0$ΐtКp@*b:"X~x zx6>eD ΰ!ؐx&"jXxIېoA| Q8IgzV'f~ Pd蚰a vhZb:f!(jG iD1~*l@ZhBy@HMjjQ!~v a)"z#7p$bA0@ (dy$*P6[,0 ,qx'bC(n]{Z,sG2r;q#lA8v(10ltt/l3 =+-5sI׳)]SwF-dmbsAZ-p-tmx| v|P@m '7ߎ⢔gyC砇.{N騧a[Bǃ.~%BB8^B/;;7<t}Ї/So=~pA/;[?]d8u4D[G *.~ꗽe~p[ߔF-H N Ӈ60?D-h@B('nalH*>.wӓ_%A  R2)ޟ&@$OzH:;BSEil!ǖ5q:H0@;:Ҋ8LwE+!\ؒC&O{IJFr^c" 8H2Q+X^}b9!0G#(`@q@1}I, XnzslL7oc܌s;9x=+~Zd0ς>r4BM P= MꄇR E-njz%EeG?Jғt+JErRiEaJӌt5)En=T!1ѣE PtqLA/^|E@h uLAeeLs`XY TVY]oնU-ᇶq!$zX߈%x_*_.X2h8<8@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*N95衈&dK)t6ZN^(TfBXfdh(`z $8P j ZY**jQ~\lcש@ڤ!HbArui0-ymk/ءj.A@uP*ܫ!DЁ>jK9E-40 Z)s@bZA p:!(k!^zjщ6L iC6-0:Xg\w@d? U6Pp/)tmx6{߀.n'7G.Wn;ؘw砇.ꬷznǾ(ny|`׮onI,6G/K[s7%8/~8ttO@> ï_pv[WK<د@H H0 ς <ЀAE^` %r$GC*@,* C`v h7ЈHE]u9[蹀!,*4QD\N>TTKcaWsnkt~ H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ J4( (ʴSJ>JզTx,,a @#EE*k$*@aʝA0 D N۽N=Q8@x ҝLY < .I*3/E ?Ha`iE a8] Aa+_6 |X W9aN2fI DTA{OrV H`@F@bb W߂UXxUVZ][o1T $Bm%HQ0(4hTyO m DiH&L6PF)TViXf\v`)dihlpy^) x橧՞*I袌[F*yp$:馜Z饆騤~|~%0Xje~f꫔xad\V'0", !F. imbԧfkJ- ($Jg:S@>p@isze9n/+1 BV `끳#?IgH D7z JkO@f-4,F[5AC@ ho uVM6EG.W35:t)wYm8v+7I}@z/pߐg^cneޫn!,]>222211111122111111111111111122:4C6J8P:U;^=gCpGuI~xLrNjDcDYBR@K?F=A;~=9x97r76j66^56O56F45>4583452321232333534935?35C36H47N49W5<^:EmBK{FSK\JhMpPtUzVWY[^aceeefggjs䊺׼۶ԧО͔ɋɊɊˍ͐ϓіӚ١ިH*4oÇ#JHŋ3jbÎ CIɓ(|Lɲ˗0c.GSHWɳϟ3k ѣi.=>-ˀ"ƏH4iH#P` R)ҳh:aV [~"өf|r8eEfÈL˸1̵De0Xq׍7B3D,ӨQsB❔k8̷M&`Y;pmgW&e,K^I\{HS3hG+ݭӏ3#4]8Ԭ;ÊFϿ C :pV]}_~߃HEh'VRvFb$h(,0(4h8<G)DiH&L6PF)TVie1RHrƗ`)dihlp)t uˆDr$$bGu!ǡ&袌6裐F*餔Vj饘f馜6Jv$%CH(\B$Ȭj뭸뮼+k $~" *҄?'n+k覫+r (< m8V+ l' 7G,WlgDS<4 |OM8=;xk3>>U[Ju f @2?/% 0  rA!0HA Ѐ( @5G_ O $jC 6t7 (A^ Rg4H2 ,aD(.CoK -0 Db6ķ0X4x4/Jx@^dvTbX эec$Ct@/HA҈3_HE22D&73* $8Hx_"I1e$"YJh |JWҖ0LgJӚ8ͩNwӞ9H:.!PRԦ:PTJժZXͪVծzXE,U!^P8$F `WvFk+ W fU]s5썮R`Vv +aX)6_evY:vZݬ:+zO#mLݩjeI3ZiE _PY[.EI32ޒNA @cA S 0@Af0%]*& 99C285 .w cA]N\`6MF|2_&Ф7@ead4nL(N1M43m4A2_3dAfj0+?HNY 7muoóf?D "+`w8ia1ah2w1x6qIsf|y C yy'=#ψyxg&BfI|`oWJՔa04-w fYMq =^(5X4a؆EvcZn_M4a=h{^qm1<鎷X;{N7!n#C8o‘ ON]ߡS3)ڍd"YŮ%4!MW0yDGns8Ϲw@ЇNHO}ѳ?z:{$jV\ճOsr[zr3tbPIಎ5HU |Pd8 uOժ0| B3F8:q)o;/䓍9σ6׭Io8뽰gtLaY~}K~|?!E,c2`ŗ\KQR&(.E} e 8`*U N#ٌ |ѿwb@ pi `gg|w'C4 헀@! ~@G8PH=@ @_Q2H%X|6~73H2a%RTHVx.#\^(`aSf(:F؅>>gOp!r8q}cVb7P jWwwyjW{|s'zHWvfW4牟!d=RSsuiz=犯85'hnwoȆyIZj(xv(}XHԸ留X7zK긎؎Ɗ8&xfƇ&!2,= !!!"""###$$$$$$%&%%(%&*&&-&'4'(G(+l+--001111111111111111111111111111111111111111111111111111111111222222222222222222222222222222222233334455667799;;>>AADwDGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~?eGp`A!\8!2Dd(Q!ņ-.pF7Q njO"T MRP!2, 7?11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122112222222222222222222222262;2@2D2H2L2P2T3W3zZ3r]4l`4fb4ae5[g4Re0E_/;Y+1R%(J,,V30`94g?9pA;u@tA?sBApCCmDElFFkHHkIJkLLlOOmRRlUUkXXj[[j__ihcdmgcmhejjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzz{z{|{{|}}}~~~òǰʮͫЩӨէ֧צئ٧ڨ۩ܫܬܮݱݳݷ޻޿eHP #JX"ŋZ1Ǝ %~ IȒ(LYr%ː._v)c͔4oR̩Sb$y5aáH*]ʴӧPJJի2zUׯ`Ê۵Z%˦۷pʝ6Y k˷odKl^췔bƐ:N88eVl9͜!{6:K.ղl5rI2#a|Rqqh AӇ._tRu{Kq|8DMt%xn4!7$|~;TL[PQ}PW~2V3@S8JcN'.[$H> :H 5KfaňKɔxڽ3OƈCPܲ%뱗23 K@c|8xCPSIe%gDlcxPsOqemq*=yVlw Gexa 0@Jm%jTd^ h6@HJz*@a#jCno܊#o@1K+ k]8PZhkWv{wUK+dkXfE!2,&   ! +6C!R#b%z(&+,./0011111111111111111111111111111111111222222222222222222222222222222222233334444556688::==@@DwDGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~e(Ar*,xpC.>??A}ACwCEqEGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~e! ,C2121212121212121212121212121212121212121212121406/7-9,;)B}%Gh!LUOHR>S7T2U.X*Z'`#d j p u {      ZZӭ̾ͯϜӕؚ֔ޚ➺袿(*\ȰÇ#JHŋ3jq"ACIɓ(Sb8P˗0cʜIs!˂5sɳ̛ | JQ@HIN>=Jի.m:`T`Ê%)¨h2I DP "J06n^kDnʥ c#KYLF@d(9N4I;xV)|4quٵ=1|iZ-Xx%A38+bsk{~v_?xt0㣈[߸ ^xhEyT)P]=8a蟄E؟m(%܂hvvBvw3xb$樣}n=5k7TlJp’>4yB@X#SIs`;5  'qycxT|Y՞~*(Oj/袌hFZPVj饘f馜v駠*ꨤjꩨꪬ*무j뭸뮼+k&6F+Vkfv+k覫+k,l' 7찾D,Wlgw ,$lɠ,0,Ȝl8<_i@-D}iH'Lc\iPG-3SJXg@m`/mllahlp-tmxxMannG.+GoÜ7Rtn^k~뢦~9AnϪS:ŮnO<{O}N?o^Ī?~_;w݉ok Ip W?O)B]P , 9ȿa'_ ! q0ΐ9deDN(|0n+ă)qC ;Ʒ.z` H2 "ɍp#(:1kOȴIB¬fL"CE:i$'IJZ̤&7Nz (GIRL*WV򕰌,gIZ̥.w^ 0IbL2f:Ќ4IjZ̦6nz 8IrL:v~ @JЂLІ:(D4 aF7юz E@Q} *i0* +5)^|aCMyS[锥8Oeӝ޳95=*T֓MU*OUQVRɚVRSWUWWXY XöR[YDz])Yˮ)K]Z+њR>-ь*U0 $Dw2RCK:π!2, *5@J U "^"$h$&p&'y'((**++,,--....////000011111111111111111111222222222222222222223333334444556666778899;;<<>>??A}ACwCEqEGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~e!2,&111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111221122222222222222222222222222222222222222334444453637383q94d;6W=7M?9EA:@B9:B<=E=>E?@GAAHCDJFGMJJONNRRRUWWX]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~ķɷ͸ѹԸڶ޻۾eQlKu*\ȰÇ#JH2+jȱG3~ID)&i˒RX:/s(̈nsѣ 9!ѧDJթtOPN s SYr۱êJmE2i*cZx#ovܰ*}Ai]훘6n &:,{|I! WУC/9 -i )S@n5ƯrzF'2|!=, 111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222333344556688;;>>AAFqFJdJNWNQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~AAA D@ B>??A}ACwCEqEGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~e!2, *5@J U "^"$h$&p&'y'((**++,,--....////000011111111111111111111222222222222222222223333334444556666778899;;<<>>??A}ACwCEqEGkGIeIL_LOXORRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~e!Made with ScreenToGif;shinyjs/inst/srcjs/0000755000176200001440000000000013606732071014047 5ustar liggesusersshinyjs/inst/srcjs/shinyjs-default-funcs.js0000644000176200001440000006666113606732071020651 0ustar liggesusers// shinyjs 1.0.1.9000 by Dean Attali // Perform common JavaScript operations in Shiny apps using plain R code shinyjs = function() { // -------------------------------- // ------ Private variables ------- // store the event handlers for the onevent function when it's called on // elements that do not exist yet in the document var _oneventData = {}; // some functions need to work with dynamically generated elements, so they // can add themselves to this list and will be called whenever the DOM is mutated var _mutationSubscribers = []; // --------------------------------------- // ------ General helper functions ------- // get an element by id using JQuery (escape chars that have special // selector meaning) var _jqid = function(id) { return $("#" + id.replace( /(:|\.|\[|\]|,|\s)/g, "\\$1" )); }; // listen to DOM changes and whenever there are new nodes added, let all // the mutation subscribers know about the new elements var _initMutations = function() { var canObserveMutation = 'MutationObserver' in window; if (canObserveMutation) { var mutationCallback = function(mutations) { mutations.forEach(function(mutation) { $.each(mutation.addedNodes, function(idx, node) { $.each(_mutationSubscribers, function(idx, fxn) { // call the subscriber on each new node fxn(node); }); }); }); }; var observer = new MutationObserver(mutationCallback); observer.observe(document.body, { childList : true, subtree : true }); } }; // if the given HTML tag is a shiny input, return the input container. // otherwise, return the original tag var _getContainer = function(els) { return $.map(els, function(el) { el = $(el); if (el.hasClass("shiny-bound-input")) { var inputContainer = el.closest(".shiny-input-container"); if (inputContainer.length > 0) { el = inputContainer; } } return el; }); }; // given a function parameters with several different ways to get DOM // elements, retrieve the correct ones var _getElements = function(params) { var $els = null; if (params.elements !== null && typeof params.elements !== "undefined") { $els = params.elements; } else if (params.id !== null && typeof params.id !== "undefined") { $els = _jqid(params.id); } else if (params.selector !== null && typeof params.selector !== "undefined") { $els = $(params.selector); } if ($els === null || $els === undefined || $els.length == 0) { shinyjs.debugMessage("shinyjs: Could not find DOM element using these parameters:"); shinyjs.debugMessage(params); $els = null; } return $els; }; // ----------------------------------- // ------ Helpers for `toggle` ------- // is an element currently hidden? var _isHidden = function(el) { return el.css("display") === "none"; }; // ---------------------------------------- // ------ Helpers for `toggleState` ------- // is an element currently disabled? var _isDisabled = function(el) { return el.prop('disabled') === true; }; // ------------------------------------- // ------ Helpers for `disabled` ------- // disable all the elements that were initialized as disabled var _initDisabled = function() { // disable elements on page load _initDisabledHelper($(".shinyjs-disabled")); // disable new elements being added to the document _mutationSubscribers.push(function(node) { _initDisabledHelper($(node).find(".shinyjs-disabled")); if ($(node).is(".shinyjs-disabled")) { _initDisabledHelper($(node)); } }); }; var _initDisabledHelper = function(els) { if (els.length == 0) return; // use a tiny delay because some input elements (sliders, selectize) need // to first be initialized, and I don't know how to tell when they're ready setTimeout(function() { // disable elements shinyjs.disable({ elements : els }); }, 10); }; // ---------------------------------------- // ------ Helpers for `show`/`hide` ------- var _showHide = function(method, params) { var defaultParams = { id : null, anim : false, animType : "slide", time : 0.5, selector : null, elements : null }; params = shinyjs.getParams(params, defaultParams); var $els = _getElements(params); if ($els === null) return; // for input elements, hide the whole container, not just the input $els = _getContainer($els); // if an element was hidden on page load, remove that flag $.map($els, function(el) { if ($(el).hasClass("shinyjs-hide")) { $(el).removeClass("shinyjs-hide"); $(el).hide(); } }); if (!params.anim) { $.map($els, function(el) { (method == "show") ? $(el).show() : $(el).hide(); }); } else { if (params.animType == "fade") { $.map($els, function(el) { (method == "show") ? $(el).fadeIn(params.time * 1000) : $(el).fadeOut(params.time * 1000); }); } else { $.map($els, function(el) { (method == "show") ? $(el).slideDown(params.time * 1000) : $(el).slideUp(params.time * 1000); }); } } // If an element was initially hidden when app started, tell shiny that // it's now visible so that it can properly render dynamic elements $.map($els, function(el) { $(el).trigger(method == "show" ? "shown" : "hidden"); }); }; // --------------------------------------------------- // ------ Helpers for `addClass`/`removeClass` ------- var _addRemoveClass = function(method, params) { var defaultParams = { id : null, class : null, selector : null, elements : null }; params = shinyjs.getParams(params, defaultParams); var $els = _getElements(params); if ($els === null) return; (method == "add") ? $els.addClass(params.class) : $els.removeClass(params.class); }; // --------------------------------------------------- // ------ Helpers for `enable`/`disable` ------------- var _enableDisable = function(method, params) { var defaultParams = { id : null, selector : null, elements : null }; params = shinyjs.getParams(params, defaultParams); var $els = _getElements(params); if ($els === null) return; // make sure we take special care of elements that need to be specifically // enabled with special javascript var toadd = $els.find(".selectized, .js-range-slider"); $els = $($els.toArray().concat(toadd.toArray())); $.map($els, function(el) { var $el = $(el); // selectize and slider inputs need special javascript if ($el.hasClass("selectized")) { (method == "enable") ? $el.selectize()[0].selectize.enable() : $el.selectize()[0].selectize.disable(); } else if ($el.hasClass("js-range-slider")) { $el.data("ionRangeSlider").update({ disable : (method == "disable") }); } // for colour inputs, we want to enable/disable all input fields else if ($el.hasClass("shiny-colour-input")) { $el = $(_getContainer($el)[0]); } // enable/disable the container as well as all individual inputs inside // (this is needed for grouped inputs such as radio and checkbox groups) var toadd = $el.find("input, button, textarea, select"); $el = $($el.toArray().concat(toadd.toArray())); $el.attr('disabled', (method == "disable")); $el.prop('disabled', (method == "disable")); method == "disable" ? $el.addClass("disabled") : $el.removeClass("disabled"); }); }; // ---------------------------------- // ------ Helpers for `reset` ------- // find all shiny input elements and set them up to allow them to be reset var _initResettables = function() { // grab all the shiny input containers that exist when the app loads _initResettablesHelper($(".shiny-input-container")); // observer new elements added to the document so that dynamically generated // elements can also be resettable _mutationSubscribers.push(function(node) { _initResettablesHelper($(node).find(".shiny-input-container")); if ($(node).is(".shiny-input-container")) { _initResettablesHelper($(node)); } }); }; // helper function to get the initial date from a bootstrap date element // if there is no initial date, return the current date var _getInputDate = function(el) { if (el[0].hasAttribute('data-initial-date')) { if (el.attr('data-initial-date') === "") { return 'NA'; } else { return el.attr('data-initial-date'); } } var today = new Date(); var yyyy = today.getFullYear().toString(); var mm = (today.getMonth() + 1).toString(); var dd = today.getDate().toString(); return yyyy + '-' + (mm[1]?mm:"0"+mm[0]) + '-' + (dd[1]?dd:"0"+dd[0]); }; // go through every Shiny input and based on what kind of input it is, // add some information to the HTML tag so that we can know how to // update it back to its original value var _initResettablesHelper = function(els) { for (var j = 0; j < els.length; j++) { var inputContainer = $(els[j]); var input = inputContainer; var foundInput = true; var inputType = null, inputValue = null, inputId = null; // dateInput if (input.hasClass("shiny-date-input")) { input = input.children("input"); inputType = "Date"; inputValue = _getInputDate(input); inputId = inputContainer.attr('id'); } // dateRangeInput else if (input.hasClass("shiny-date-range-input")) { inputType = "DateRange"; inputValue = _getInputDate($(input.find("input")[0])) + "," + _getInputDate($(input.find("input")[1])); } // checkboxGroupInput else if (input.hasClass("shiny-input-checkboxgroup")) { inputType = "CheckboxGroup"; var selected = []; var selectedEls = input.find("input[type='checkbox']:checked"); selectedEls.each(function() { selected.push($(this).val()); }); inputValue = JSON.stringify(selected); } // radioButtons else if (input.hasClass("shiny-input-radiogroup")) { inputType = "RadioButtons"; inputValue = input.find("input[type='radio']:checked").val(); } // sliderInput else if (input.children(".js-range-slider").length > 0) { input = input.children(".js-range-slider"); inputType = "Slider"; inputValue = input.attr('data-from'); if (typeof input.attr('data-to') !== "undefined") { inputValue = inputValue + "," + input.attr('data-to'); } } // selectInput / selectizeInput else if (input.find("select").length > 0) { input = input.find("select"); inputType = "Select"; inputValue = input.val(); if (inputValue === null) { inputValue = ""; } inputValue = JSON.stringify(inputValue); } // colourInput else if (input.children("input.shiny-colour-input").length > 0) { input = input.children("input.shiny-colour-input"); inputType = "Colour"; inputValue = input.attr('data-init-value'); } // numericInput else if (input.children("input[type='number']").length > 0) { input = input.children("input[type='number']"); inputType = "Numeric"; } // textInput else if (input.children("input[type='text']").length > 0) { input = input.children("input[type='text']"); inputType = "Text"; } // checkboxInput else if (input.find("input[type='checkbox']").length > 0) { input = input.find("input[type='checkbox']"); inputType = "Checkbox"; inputValue = input.prop('checked'); } // passwordInput else if (input.children("input[type='password']").length > 0) { input = input.children("input[type='password']"); inputType = "Password"; } // textAreaInput else if (input.children("textarea").length > 0) { input = input.children("textarea"); inputType = "TextArea"; } else if (input.find("input[type='file']").length > 0) { input = input.find("input[type='file']"); inputType = "File" } // if none of the above, no supported Shiny input was found else { foundInput = false; } // if we found a Shiny input, set all the info on it if (foundInput) { if (inputId === null) { inputId = input.attr('id'); } if (inputValue === null) { inputValue = input.val(); } input.attr('data-shinyjs-resettable-id', inputId). attr('data-shinyjs-resettable-type', inputType). attr('data-shinyjs-resettable-value', inputValue). addClass('shinyjs-resettable'); } } }; // ------------------------------------ // ------ Helpers for `onevent` ------- // ensure that the onevent function works for dynamic elements var _initOnevent = function() { // for every new node in the DOM, check if there is an ID that was registered // with `onevent` for a dynamic element that corresponds to a node that was // just created. If so, find out what events were registered to it and the // shiny event handlers for it, and attach them _mutationSubscribers.push(function(node) { // check the top node var $node = $(node); var id = $node.attr("id"); _eventsAttachById(id); // check all descendants $node.find("*").each(function() { var id = $(this).attr("id"); _eventsAttachById(id); }); }); }; // Attach all events registered for a given id (if any) var _eventsAttachById = function(id) { var elementData = _oneventData[id]; if (elementData !== null) { $.each(elementData, function(event, eventDatas) { $.each(eventDatas, function(idx, eventData) { _oneventAttach({ event : event, id : id, shinyInputId : eventData.shinyInputId, add : true, customProps : eventData.customProps }); }); }); } }; // attach an event listener to a DOM element that will trigger a call to Shiny var _oneventAttach = function(params) { var el = _jqid(params.id); // for shiny inputs, perform the action when the event happens in any // section of the input widget el = $(_getContainer(el)[0]); var shinyInputId = params.shinyInputId; var attrName = "data-shinyjs-" + params.event; // if this is the first event handler of this event type we attach to this // element, initialize the data attribute and add the event handler var first = !(el[0].hasAttribute(attrName)); if (first) { el.attr(attrName, JSON.stringify(Object())); el[params.event](function(event) { // Store a subset of the event properties (many are non-serializeable) var props = ['altKey', 'button', 'buttons', 'clientX', 'clientY', 'ctrlKey', 'pageX', 'pageY', 'screenX', 'screenY', 'shiftKey', 'which', 'charCode', 'key', 'keyCode', 'offsetX', 'offsetY']; props = props.concat(params.customProps); var eventSimple = {}; $.each(props, function(idx, prop) { if (prop in event) { eventSimple[[prop]] = event[[prop]]; } }); eventSimple.shinyjsRandom = Math.random(); var oldValues = JSON.parse(el.attr(attrName)); var newValues = Object(); $.each(oldValues, function(key, value) { var newValue = value + 1; newValues[key] = newValue; Shiny.onInputChange(key, eventSimple); }); el.attr(attrName, JSON.stringify(newValues)); }); } // if we want this action to overwrite existing ones, unbind event handler if (params.add) { var attrValue = JSON.parse(el.attr(attrName)); } else { var attrValue = {}; } attrValue[shinyInputId] = 0; el.attr(attrName, JSON.stringify(attrValue)); }; return { // by default, debug mode is off. If shinyjs is initialized with debug mode, // then debugging messages will be printed to the console debug : false, // write a message to the console for debugging purposes if debug mode is on debugMessage : function(text) { if (shinyjs.debug) { console.info(text); } }, // Given a set of user-provided parameters and some default parameters, // return a dictionary of key-value parameter pairs. // The user parameters can either be an (unnamed) array, in which case // we assume the order of the parameters, or it can be a dictionary with // key-value parameter pairs. getParams : function (params, defaultParams) { var finalParams = defaultParams; if (typeof params == "string") { params = Array(params); } if (params instanceof Array) { for (var i = 0; i < params.length; i++) { finalParams[Object.keys(finalParams)[i]] = params[i]; } } else { $.extend(finalParams, params); } return finalParams; }, // this function gets called once (automatically) to initialize shinyjs initShinyjs : function() { _initMutations(); _initResettables(); _initDisabled(); _initOnevent(); shinyjs.init(); }, // the init function should not be implemented here, it is a placeholder // so that users can define their own `shinyjs.init` function (using extendShinyjs) // that will be run when the page is initialized init : function() {}, // ----------------------------------------------------------------- // ------ All functions below are exported shinyjs function -------- // The documentation for function foo is available in R via ?shinyjs::foo show : function (params) { _showHide("show", params); }, hide : function (params) { _showHide("hide", params); }, toggle : function (params) { var defaultParams = { id : null, anim : false, animType : "slide", time : 0.5, selector : null, condition : null }; params = shinyjs.getParams(params, defaultParams); // if there is no condition, then hide/show each element based on whether // it is currently shown or hidden if (params.condition === null) { var $els = _getElements(params); if ($els === null) return; // for input elements, toggle the whole container, not just the input $els = _getContainer($els); $.map($els, function(el) { params.elements = $(el); _isHidden($(el)) ? shinyjs.show(params) : shinyjs.hide(params); }); } else if (params.condition) { shinyjs.show(params); } else { shinyjs.hide(params); } }, addClass : function (params) { _addRemoveClass("add", params); }, removeClass : function (params) { _addRemoveClass("remove", params); }, toggleClass : function (params) { var defaultParams = { id : null, class : null, condition : null, selector : null }; params = shinyjs.getParams(params, defaultParams); // it there is no condition, add/remove class based on current state if (params.condition === null) { var $els = _getElements(params); if ($els === null) return; $.map($els, function(el) { params.elements = $(el); $(el).hasClass(params.class) ? shinyjs.removeClass(params) : shinyjs.addClass(params); }); } else if (params.condition) { shinyjs.addClass(params); } else { shinyjs.removeClass(params); } }, enable : function (params) { _enableDisable("enable", params); }, disable : function (params) { _enableDisable("disable", params); }, toggleState : function (params) { var defaultParams = { id : null, condition : null, selector : null }; params = shinyjs.getParams(params, defaultParams); // it there is no condition, enable/disable based on current state if (params.condition === null) { var $els = _getElements(params); if ($els === null) return; $.map($els, function(el) { params.elements = $(el); _isDisabled($(el)) ? shinyjs.enable(params) : shinyjs.disable(params); }); } else if (params.condition) { shinyjs.enable(params); } else { shinyjs.disable(params); } }, html : function (params) { var defaultParams = { id : null, html : null, add : false, selector : null }; params = shinyjs.getParams(params, defaultParams); var $els = _getElements(params); if ($els === null) return; $.each($els, function(idx, node) { if (params.add) { node.innerHTML += params.html; } else { node.innerHTML = params.html; } }); }, alert : function (params) { var defaultParams = { text : null } params = shinyjs.getParams(params, defaultParams); if (typeof params.text == "object") { alert(JSON.stringify(params.text, null, 4)); } else { alert(params.text); } }, logjs : function (params) { var defaultParams = { text : null } params = shinyjs.getParams(params, defaultParams); console.log(params.text); }, runjs : function (params) { var defaultParams = { code : null } params = shinyjs.getParams(params, defaultParams); eval(params.code); }, // onevent function is more complicated than the rest of the shinyjs functions // we attach an event handler (onclick/onkeydown/onmouseup/etc) to an element // and when it happens we call Shiny onevent : function (params) { var defaultParams = { event : null, id : null, shinyInputId : null, add : false, customProps : [] } params = shinyjs.getParams(params, defaultParams); var el = _jqid(params.id); // if element does not exist in the document, save the information so that // if the element is created dynamically later, we can add the handlers if (el.length == 0) { if (!(params.id in _oneventData)) { _oneventData[params.id] = {}; } var elementData = _oneventData[params.id]; if (!(params.event in elementData) || !params.add) { elementData[params.event] = []; } elementData[params.event].push({ "shinyInputId" : params.shinyInputId, "customProps" : params.customProps }); } // if the element does exist, add the event handler else { _oneventAttach(params); } }, // the reset function is also complicated because we need R to tell us // what input element or form to reset, then the javascript needs to // figure out the correct type and initial value for each input and pass // that info back to R so that R can call the correct shiny::updateFooInput() reset : function(params) { var defaultParams = { id : null, shinyInputId : null } params = shinyjs.getParams(params, defaultParams); var el = _jqid(params.id); // find all the resettable input elements var resettables; if (el.hasClass("shinyjs-resettable")) { resettables = el; } else { resettables = el.find(".shinyjs-resettable"); } // go through each input and record its id, type, and initial value var messages = Object(); for (var i = 0; i < resettables.length; i++) { var resettable = $(resettables[i]); var type = resettable.attr('data-shinyjs-resettable-type'); var value = resettable.attr('data-shinyjs-resettable-value'); var id = resettable.attr('data-shinyjs-resettable-id'); if (id !== undefined) { // file inputs need to be reset manually since shiny doesn't have an // update function for them if (type == "File") { _jqid(id).val(''); _jqid(id + "_progress").css("visibility", "hidden"); _jqid(id + "_progress").find(".progress-bar").css("width", "0"); _jqid(id).closest(".input-group").find("input[type='text']").val(''); } else { messages[id] = { 'type' : type, 'value' : value }; } } } // send a message back to R with the info for each input element Shiny.onInputChange(params.shinyInputId, messages); }, // run an R function after an asynchronous delay delay : function(params) { var defaultParams = { ms : null, shinyInputId : null } params = shinyjs.getParams(params, defaultParams); // send a message back to R when the delay is up setTimeout(function() { Shiny.onInputChange(params.shinyInputId, params.ms); }, params.ms); }, // click on a button click : function(params) { var defaultParams = { id : null }; params = shinyjs.getParams(params, defaultParams); var $el = _getElements(params); if ($el === null) return; $el[0].click(); } }; }(); // Initialize shinyjs on the JS side $(function() { shinyjs.initShinyjs(); }); // ShinySenderQueue code taken from Joe Cheng // https://github.com/rstudio/shiny/issues/1476 function ShinySenderQueue() { this.readyToSend = true; this.queue = []; this.timer = null; } ShinySenderQueue.prototype.send = function(name, value) { var self = this; function go() { self.timer = null; if (self.queue.length) { var msg = self.queue.shift(); Shiny.onInputChange(msg.name, msg.value); self.timer = setTimeout(go, 0); } else { self.readyToSend = true; } } if (this.readyToSend) { this.readyToSend = false; Shiny.onInputChange(name, value); this.timer = setTimeout(go, 0); } else { this.queue.push({name: name, value: value}); if (!this.timer) { this.timer = setTimeout(go, 0); } } }; shinyjs/inst/srcjs/inject.js0000644000176200001440000000014013542227616015657 0ustar liggesusersShiny.addCustomMessageHandler('shinyjs-inject', function(content) {$("head").append(content);});shinyjs/inst/doc/0000755000176200001440000000000013606742006013467 5ustar liggesusersshinyjs/inst/doc/shinyjs-extend.html0000644000176200001440000060075613606742001017342 0ustar liggesusers extendShinyjs: Calling your own JavaScript functions from R

extendShinyjs: Calling your own JavaScript functions from R

Dean Attali

2020-01-12

extendShinyjs: Calling your own JavaScript functions from R

Simple example

Using extendShinyjs is very simple and makes defining and calling JavaScript functions painless. Here is a very basic example of using extendShinyjs to define a (fairly useless) function that changes the colour of the page.

Note: All the examples on this page assume that you have the V8 package installed. If you cannot install V8, then you will need to use the functions argument of extendShinyjs (read more about this argument with ?shinyjs::extendShinyjs).

library(shiny)
library(shinyjs)

jsCode <- "shinyjs.pageCol = function(params){$('body').css('background', params);}"

shinyApp(
  ui = fluidPage(
    useShinyjs(),
    extendShinyjs(text = jsCode),
    selectInput("col", "Colour:",
                c("white", "yellow", "red", "blue", "purple"))
  ),
  server = function(input, output) {
    observeEvent(input$col, {
      js$pageCol(input$col)
    })
  }
)

Running the code above produces this shiny app:

Extendshinyjs demo

See how easy that was? All I had to do was make the JavaScript function shinyjs.pageCol, pass the JavaScript code as an argument to extendShinyjs, and then I can call js$pageCol().

That’s the basic idea: any JavaScript function named shinyjs.foo will be available to call as js$foo(). You can either pass the JS code as a string to the text argument, or place the JS code in a separate JavaScript file and use the script argument to specify where the code can be found. Using a separate file is generally prefered over writing the code inline, but in these examples I will always use the text argument to keep it simple.

Running JavaScript code on page load

If there is any JavaScript code that you want to run immediately when the page loads rather than having to call it from the server, you can place it inside a shinyjs.init function. The function shinyjs.init will automatically be called when the Shiny app’s HTML is initialized. A common use for this is when registering event handlers or initializing JavaScript objects, as these usually just need to run once when the page loads.

For example, the following example uses shinyjs.init to register an event handler so that every keypress will print its corresponding key code:

jscode <- "
shinyjs.init = function() {
  $(document).keypress(function(e) { alert('Key pressed: ' + e.which); });
}"

shinyApp(
  ui = fluidPage(
    useShinyjs(),
    extendShinyjs(text = jscode),
    "Press any key"
  ),
  server = function(input, output) {}
)

Passing arguments from R to JavaScript

Any shinyjs function that is called will pass a single array-like parameter to its corresponding JavaScript function. If the function in R was called with unnamed arguments, then it will pass an Array of the arguments; if the R arguments are named then it will pass an Object with key-value pairs.

For example, calling js$foo("bar", 5) in R will call shinyjs.foo(["bar", 5]) in JS, while calling js$foo(num = 5, id = "bar") in R will call shinyjs.foo({num : 5, id : "bar"}) in JS. This means that the shinyjs.foo function needs to be able to deal with both types of parameters.

To assist in normalizing the parameters, shinyjs provides a shinyjs.getParams() function which serves two purposes. First of all, it ensures that all arguments are named (even if the R function was called without names). Secondly, it allows you to define default values for arguments.

Here is an example of a JS function that changes the background colour of an element and uses shinyjs.getParams().

shinyjs.backgroundCol = function(params) {
  var defaultParams = {
    id : null,
    col : "red"
  };
  params = shinyjs.getParams(params, defaultParams);

  var el = $("#" + params.id);
  el.css("background-color", params.col);
}

Note the defaultParams that we defined and the call to shinyjs.getParams. It ensures that calling js$backgroundCol("test", "blue") and js$backgroundCol(id = "test", col = "blue") and js$backgroundCol(col = "blue", id = "test") are all equivalent, and that if the colour parameter is not provided then “red” will be the default.

All the functions provided in shinyjs make use of shinyjs.getParams, and it is highly recommended to always use it in your functions as well. Notice that the order of the arguments in defaultParams in the JavaScript function matches the order of the arguments when calling the function in R with unnamed arguments.

For completeness, here is the code for a shiny app that uses the above function (it’s not a very practical example, but it’s great for showing how to use extendShinyjs with parameters):

library(shiny)
library(shinyjs)

jsCode <- '
shinyjs.backgroundCol = function(params) {
  var defaultParams = {
    id : null,
    col : "red"
  };
  params = shinyjs.getParams(params, defaultParams);

  var el = $("#" + params.id);
  el.css("background-color", params.col);
}'

shinyApp(
  ui = fluidPage(
    useShinyjs(),
    extendShinyjs(text = jsCode),
    p(id = "name", "My name is Dean"),
    p(id = "sport", "I like soccer"),
    selectInput("col", "Colour:",
                c("white", "yellow", "red", "blue", "purple")),    
    textInput("selector", "Element", ""),
    actionButton("btn", "Go")
  ),
  server = function(input, output) {
    observeEvent(input$btn, {
      js$backgroundCol(input$selector, input$col)
    })
  }
)

And the resulting app:

Extendshinyjs params demo

Note that I chose to define the JS code as a string for illustration purposes, but in reality I would prefer to place the code in a separate file and use the script argument instead of text.

shinyjs/inst/doc/shinyjs-example.R0000644000176200001440000000020413606742001016721 0ustar liggesusers## ----setup, echo = FALSE, message = FALSE-------------------------------- knitr::opts_chunk$set(tidy = FALSE, comment = "#>") shinyjs/inst/doc/shinyjs-usage.R0000644000176200001440000000020413606742002016373 0ustar liggesusers## ----setup, echo = FALSE, message = FALSE-------------------------------- knitr::opts_chunk$set(tidy = FALSE, comment = "#>") shinyjs/inst/doc/shinyjs-extend.Rmd0000644000176200001440000001447213542227616017123 0ustar liggesusers--- title: "extendShinyjs: Calling your own JavaScript functions from R" author: "Dean Attali" date: "`r Sys.Date()`" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{extendShinyjs - Calling your own JavaScript functions from R} %\VignetteEngine{knitr::rmarkdown} %\usepackage[utf8]{inputenc} --- ```{r setup, echo = FALSE, message = FALSE} knitr::opts_chunk$set(tidy = FALSE, comment = "#>") ``` # extendShinyjs: Calling your own JavaScript functions from R

Simple example

Using `extendShinyjs` is very simple and makes defining and calling JavaScript functions painless. Here is a very basic example of using `extendShinyjs` to define a (fairly useless) function that changes the colour of the page. > Note: All the examples on this page assume that you have the `V8` package installed. If you cannot install `V8`, then you will need to use the `functions` argument of `extendShinyjs` (read more about this argument with `?shinyjs::extendShinyjs`). ``` library(shiny) library(shinyjs) jsCode <- "shinyjs.pageCol = function(params){$('body').css('background', params);}" shinyApp( ui = fluidPage( useShinyjs(), extendShinyjs(text = jsCode), selectInput("col", "Colour:", c("white", "yellow", "red", "blue", "purple")) ), server = function(input, output) { observeEvent(input$col, { js$pageCol(input$col) }) } ) ``` Running the code above produces this shiny app: ![Extendshinyjs demo](../inst/img/extendshinyjs-demo.gif) See how easy that was? All I had to do was make the JavaScript function `shinyjs.pageCol`, pass the JavaScript code as an argument to `extendShinyjs`, and then I can call `js$pageCol()`. That's the basic idea: any JavaScript function named `shinyjs.foo` will be available to call as `js$foo()`. You can either pass the JS code as a string to the `text` argument, or place the JS code in a separate JavaScript file and use the `script` argument to specify where the code can be found. Using a separate file is generally prefered over writing the code inline, but in these examples I will always use the `text` argument to keep it simple.

Running JavaScript code on page load

If there is any JavaScript code that you want to run immediately when the page loads rather than having to call it from the server, you can place it inside a `shinyjs.init` function. The function `shinyjs.init` will automatically be called when the Shiny app's HTML is initialized. A common use for this is when registering event handlers or initializing JavaScript objects, as these usually just need to run once when the page loads. For example, the following example uses `shinyjs.init` to register an event handler so that every keypress will print its corresponding key code: ``` jscode <- " shinyjs.init = function() { $(document).keypress(function(e) { alert('Key pressed: ' + e.which); }); }" shinyApp( ui = fluidPage( useShinyjs(), extendShinyjs(text = jscode), "Press any key" ), server = function(input, output) {} ) ```

Passing arguments from R to JavaScript

Any `shinyjs` function that is called will pass a single array-like parameter to its corresponding JavaScript function. If the function in R was called with unnamed arguments, then it will pass an Array of the arguments; if the R arguments are named then it will pass an Object with key-value pairs. For example, calling `js$foo("bar", 5)` in R will call `shinyjs.foo(["bar", 5])` in JS, while calling `js$foo(num = 5, id = "bar")` in R will call `shinyjs.foo({num : 5, id : "bar"})` in JS. This means that the `shinyjs.foo` function needs to be able to deal with both types of parameters. To assist in normalizing the parameters, `shinyjs` provides a `shinyjs.getParams()` function which serves two purposes. First of all, it ensures that all arguments are named (even if the R function was called without names). Secondly, it allows you to define default values for arguments. Here is an example of a JS function that changes the background colour of an element and uses `shinyjs.getParams()`. ``` shinyjs.backgroundCol = function(params) { var defaultParams = { id : null, col : "red" }; params = shinyjs.getParams(params, defaultParams); var el = $("#" + params.id); el.css("background-color", params.col); } ``` Note the `defaultParams` that we defined and the call to `shinyjs.getParams`. It ensures that calling `js$backgroundCol("test", "blue")` and `js$backgroundCol(id = "test", col = "blue")` and `js$backgroundCol(col = "blue", id = "test")` are all equivalent, and that if the colour parameter is not provided then "red" will be the default. All the functions provided in `shinyjs` make use of `shinyjs.getParams`, and it is highly recommended to always use it in your functions as well. Notice that the order of the arguments in `defaultParams` in the JavaScript function matches the order of the arguments when calling the function in R with unnamed arguments. For completeness, here is the code for a shiny app that uses the above function (it's not a very practical example, but it's great for showing how to use `extendShinyjs` with parameters): ``` library(shiny) library(shinyjs) jsCode <- ' shinyjs.backgroundCol = function(params) { var defaultParams = { id : null, col : "red" }; params = shinyjs.getParams(params, defaultParams); var el = $("#" + params.id); el.css("background-color", params.col); }' shinyApp( ui = fluidPage( useShinyjs(), extendShinyjs(text = jsCode), p(id = "name", "My name is Dean"), p(id = "sport", "I like soccer"), selectInput("col", "Colour:", c("white", "yellow", "red", "blue", "purple")), textInput("selector", "Element", ""), actionButton("btn", "Go") ), server = function(input, output) { observeEvent(input$btn, { js$backgroundCol(input$selector, input$col) }) } ) ``` And the resulting app: ![Extendshinyjs params demo](../inst/img/extendshinyjs-params.gif) Note that I chose to define the JS code as a string for illustration purposes, but in reality I would prefer to place the code in a separate file and use the `script` argument instead of `text`. shinyjs/inst/doc/shinyjs-example.Rmd0000644000176200001440000001571113542227616017264 0ustar liggesusers--- title: "shinyjs example app walk-through" author: "Dean Attali" date: "`r Sys.Date()`" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{shinyjs example app walk-through} %\VignetteEngine{knitr::rmarkdown} %\usepackage[utf8]{inputenc} --- ```{r setup, echo = FALSE, message = FALSE} knitr::opts_chunk$set(tidy = FALSE, comment = "#>") ``` # shinyjs example app walk-through This document provides a step-by-step guide on how to add a variety of shinyjs features to a simple app in order to make it more user friendly. *You can view the final Shiny app developed in this simple example [here](http://daattali.com/shiny/shinyjs-basic/).* Suppose we want to have a simple Shiny app that collects a user's basic information (name, age, company) and submits it, along with the time of submission. Here is a very simple implementation of such an app (nothing actually happens when the user "submits"). ``` library(shiny) shinyApp( ui = fluidPage( div(id = "myapp", h2("shinyjs demo"), textInput("name", "Name", ""), numericInput("age", "Age", 30), textInput("company", "Company", ""), p("Timestamp: ", span(date())), actionButton("submit", "Submit") ) ), server = function(input, output) { } ) ``` *Note that I generally don't like running Shiny apps like this and prefer to declare the UI and server separately, but this style is used here for brevity.* Here is what that app would look like ![Demo app](../inst/img/demo-basic-v1.png) ### Add shinyjs features Now suppose we want to add a few features to the app to make it a bit more user-friendly. First we need to set up the app to use `shinyjs` by making a call to `useShinyjs()` in the Shiny app's UI. Here are 7 features we'll add to the app, each followed with the code to implement it using `shinyjs`: **1. The "Name" field is mandatory and thus the "Submit" button should not be enabled if there is no name** In the server portion, add the following code ``` observe({ if (is.null(input$name) || input$name == "") { shinyjs::disable("submit") } else { shinyjs::enable("submit") } }) ``` Or instead you can use the `toggleState` function and pass it a `condition`: ``` observe({ shinyjs::toggleState("submit", !is.null(input$name) && input$name != "") }) ``` You can use the optional `condition` in some other functions as well, which can be very useful to make your code shorter and more understandable. **2. The "Age" and "Company" fields are optional and we want to have the ability to hide that section of the form** First, we need to section off the "Age" and "Company" elements into their own section, so we surround them with a `div` ``` div(id = "advanced", numericInput("age", "Age", 30), textInput("company", "Company", "") ) ``` We also need to add a link in the UI that will be used to hide/show the section ``` a(id = "toggleAdvanced", "Show/hide advanced info") ``` Lastly, we need to tell Shiny to show/hide the section when the link is clicked by adding this code to the server ``` shinyjs::onclick("toggleAdvanced", shinyjs::toggle(id = "advanced", anim = TRUE)) ``` **3. Similarly, since we don't really care about "Age" and "Company" too much, we want to hide them initially when the form loads** Simply surround the section we want to hide initially with `shinyjs::hidden` ``` shinyjs::hidden( div(id = "advanced", ... )) ``` **4. The user should be able to update the "Timestamp" in case he spends way too long filling out the form (not very realistic here, and the timestamp should ideally be determined when the button is clicked, but it's good enough for illustration purposes)** First, we need to add an "Update" link to click on, and we need to give the element showing the time an `id` so that we can refer to it later when we want to change its contents. To do that, replace `p("Timestamp: ", span(date()))` with ``` p("Timestamp: ", span(id = "time", date()), a(id = "update", "Update")) ``` Now we need to tell Shiny what to do when "Update" is clicked by adding this to the server ``` shinyjs::onclick("update", shinyjs::html("time", date())) ``` **5. Some users may find it hard to read the small text in the app, so there should be an option to increase the font size** First, we need to add checkbox to the UI ``` checkboxInput("big", "Bigger text", FALSE) ``` In order to make the text bigger, we will use CSS. So let's add an appropriate CSS rule by adding this code to the UI ``` shinyjs::inlineCSS(list(.big = "font-size: 2em")) ``` Lastly, we want the text to be big or small depending on whether the checkbox is checked by adding this code to the server ``` observe({ if (input$big) { shinyjs::addClass("myapp", "big") } else { shinyjs::removeClass("myapp", "big") } }) ``` Or, again, we can use the `toggleClass` function with the `condition` argument: ``` observe({ shinyjs::toggleClass("myapp", "big", input$big) }) ``` **6. Give the user a "Thank you" message upon submission** Simply add the following to the server ``` observeEvent(input$submit, { shinyjs::alert("Thank you!") }) ``` **7. Allow the user to reset the form** First let's add a button to the UI ``` actionButton("reset", "Reset form") ``` And when the button is clicked, reset the form ``` observeEvent(input$reset, { shinyjs::reset("myapp") }) ``` ### Final code The final code looks like this ``` library(shiny) shinyApp( ui = fluidPage( shinyjs::useShinyjs(), shinyjs::inlineCSS(list(.big = "font-size: 2em")), div(id = "myapp", h2("shinyjs demo"), checkboxInput("big", "Bigger text", FALSE), textInput("name", "Name", ""), a(id = "toggleAdvanced", "Show/hide advanced info", href = "#"), shinyjs::hidden( div(id = "advanced", numericInput("age", "Age", 30), textInput("company", "Company", "") ) ), p("Timestamp: ", span(id = "time", date()), a(id = "update", "Update", href = "#") ), actionButton("submit", "Submit"), actionButton("reset", "Reset form") ) ), server = function(input, output) { observe({ shinyjs::toggleState("submit", !is.null(input$name) && input$name != "") }) shinyjs::onclick("toggleAdvanced", shinyjs::toggle(id = "advanced", anim = TRUE)) shinyjs::onclick("update", shinyjs::html("time", date())) observe({ shinyjs::toggleClass("myapp", "big", input$big) }) observeEvent(input$submit, { shinyjs::alert("Thank you!") }) observeEvent(input$reset, { shinyjs::reset("myapp") }) } ) ``` You can view the final app [here](http://daattali.com/shiny/shinyjs-basic/). shinyjs/inst/doc/shinyjs.Rmd0000644000176200001440000002537013542227616015635 0ustar liggesusers--- title: "Package shinyjs" author: "Dean Attali" date: "`r Sys.Date()`" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Package shinyjs} %\VignetteEngine{knitr::rmarkdown} %\usepackage[utf8]{inputenc} --- ```{r setup, echo = FALSE, message = FALSE} knitr::opts_chunk$set(tidy = FALSE, comment = "#>") ```

shinyjs

shinyjs

Easily improve the user experience of your Shiny apps in seconds

Official website · Copyright 2016 Dean Attali

Donate Build Status CRAN version

--- `shinyjs` lets you perform common useful JavaScript operations in Shiny apps that will greatly improve your apps without having to know any JavaScript. Examples include: hiding an element, disabling an input, resetting an input back to its original value, delaying code execution by a few seconds, and many more useful functions for both the end user and the developer. `shinyjs` can also be used to easily call your own custom JavaScript functions from R. **shinyjs is under the AGPL-3 license. For a commercial license, please [contact me](https://deanattali.com/contact). If you find shinyjs useful, please consider supporting its development!**

# Table of contents - [Demos and tutorials](#demos) - [Overview of main functions](#overview-main) - [Installation](#install) - [How to use](#usage) - [Basic use case - complete working example](#usecase) - [Calling your own JavaScript functions from R](#extendshinyjs) - [FAQ and extra tricks](#faq-tricks) - [More resources](#more-resources)

Demos and tutorials

- [Demo Shiny app](https://deanattali.com/shinyjs/demo) that lets you play around with some of the functionality in `shinyjs`. - [Video of my shinyjs talk](https://deanattali.com/shinyjs-shinydevcon-2016/) (30 min) and the corresponding [presentation slides](https://bit.ly/shinyjs-slides) from the 2016 Shiny Developer Conference. - [Video of my shinyjs talk](https://deanattali.com/shinyjs-user-2016/) (5 min) and the corresponding [presentation slides](https://bit.ly/shinyjs-slides-useR2016) from the 2016 useR Conference.

Overview of main functions

**Note: In order to use any `shinyjs` function in a Shiny app, you must first call `useShinyjs()` anywhere in the app's UI.** | Function | Description | |---------------------|----------------------------------------------------| | `show`/`hide`/`toggle` | Display or hide an element (optionally with an animation). | | `hidden` | Initialize a Shiny tag as invisible (can be shown later with a call to `show`). | | `enable`/`disable`/`toggleState` | Enable or disable an input element, such as a button or a text input. | | `disabled` | Initialize a Shiny input as disabled. | | `reset` | Reset a Shiny input widget back to its original value. | | `delay` | Execute R code (including any `shinyjs` functions) after a specified amount of time. | | `alert` | Show a message to the user. | | `click` | Simulate a click on a button. | | `html` | Change the text/HTML of an element. | | `onclick` | Run R code when a specific element is clicked. Was originally developed with the sole purpose of running a `shinyjs` function when an element is clicked, though any R code can be used. | | `onevent` | Similar to `onclick`, but can be used with many other events instead of click (for example, listen for a key press, mouse hover, etc). | | `addClass`/`removeClass`/`toggleClass` | add or remove a CSS class from an element. | | `runjs` | Run arbitrary JavaScript code. | | `extendShinyjs` | Allows you to write your own JavaScript functions and use `shinyjs` to call them as if they were regular R code. More information is available in the section "Calling your own JavaScript functions from R" below. | ### Functions that help you during Shiny app development | Function | Description | |---------------------|----------------------------------------------------| | `runcodeUI`+`runcodeServer` | Adds a text input to your app that lets you run arbitrary R code live. | | `showLog` | Print any JavaScript `console.log()` messages in the R console, to make it easier and quicker to debug apps without having to open the JS console. | | `logjs` | Print a message to the JavaScript console (mainly used for debugging purposes). | | `inlineCSS` | Easily add inline CSS to a Shiny app. | [Check out the shinyjs demo app](https://deanattali.com/shinyjs/demo) to see some of these in action, or install `shinyjs` and run `shinyjs::runExample()` to see more demos.

Installation

To install the stable CRAN version: ``` install.packages("shinyjs") ``` To install the latest development version from GitHub: ``` install.packages("devtools") devtools::install_github("daattali/shinyjs") ```

How to use

A typical Shiny app has a UI portion and a server portion. Before using most shinyjs functions, you need to call `useShinyjs()` in the app's UI. It's best to include it near the top as a convention. Here is a minimal Shiny app that uses `shinyjs`: ``` library(shiny) library(shinyjs) ui <- fluidPage( useShinyjs(), # Include shinyjs actionButton("button", "Click me"), textInput("text", "Text") ) server <- function(input, output) { observeEvent(input$button, { toggle("text") # toggle is a shinyjs function }) } shinyApp(ui, server) ``` This is how most Shiny apps should initialize `shinyjs` - by calling `useShinyjs()` near the top of the UI. However, if you use shinyjs in any of the following cases: - In Shiny dashboards (built using the `shinydashboard` package) - In Shiny apps that use a `navbarPage` layout - In Rmd documents - In Shiny apps that manually build the user interface with an HTML file or template (instead of using Shiny's UI functions) Then you should see the [*Including shinyjs in different types of apps*](https://deanattali.com/shinyjs/advanced) document. If your Shiny app doesn't fall into any of these categories, then the above code sample should be enough to get your started with including shinyjs in your app.

Basic use case - complete working example

See the [*shinyjs example app walk-through*](https://deanattali.com/shinyjs/example) document for a step-by-step guide on how to add a variety of shinyjs features to a simple app in order to make it more user friendly.

Calling your own JavaScript functions from R

You can also use `shinyjs` to add your own JavaScript functions that can be called from R as if they were regular R functions using `extendShinyjs`. This is only suitable for advanced users who are familiar with JavaScript and wish to facilitate the communication between R and JavaScript. To learn about this feature and see how useful it can be, see the [*extendShinyjs: Calling your own JavaScript functions from R*](https://deanattali.com/shinyjs/extend) document.

FAQ and extra tricks

There are several questions that pop up very frequently in my email or on StackOverflow about "How do I use shinyjs to do \_\_\_?" Here is a list of a few of these common questions with links to a solution that could be useful. Note that all of these require using `extendShinyjs()`. - [How do I show/hide the `shinydashboard` sidebar programmatically?](https://stackoverflow.com/a/31306707/3943160) - [How do I hide/disable a tab?](https://stackoverflow.com/a/31719425/3943160) - [How do I refresh the page?](https://stackoverflow.com/a/34758024/3943160) - [How do I call a JavaScript function from a different JavaScript library?](https://github.com/timelyportfolio/sweetalertR/issues/1#issuecomment-151685005) - [How do I change the values of a `sliderInput`?](https://stackoverflow.com/a/31066997/3943160) - [How do I call JavaScript code and use the return value?](https://stackoverflow.com/a/34728125/3943160) I also keep a long [list of various Shiny tips & tricks](https://deanattali.com/blog/advanced-shiny-tips/) for solving common Shiny problems, many of which make use of shinyjs.

More resources

This document is meant to serve as a high overview of shinyjs. There are three more documents provided in shinyjs to teach you various aspects of the package: - [Including shinyjs in different types of apps](https://deanattali.com/shinyjs/advanced) - [shinyjs example app walk-through](https://deanattali.com/shinyjs/example) - [extendShinyjs: Calling your own JavaScript functions from R](https://deanattali.com/shinyjs/extend) If you need help with shinyjs, a good place to start is to try to get help from the community. I suggest browsing the [shinyjs tag](https://stackoverflow.com/tags/shinyjs) on StackOverflow or asking your own question there. You can also try getting help on the [RStudio Community forums](https://community.rstudio.com/c/shiny). If you still can't get an answer to your question, you can [contact me](https://deanattali.com/contact). However, because of the high volume of support emails I receive daily, I can only provide support for a fee (as part of my [Shiny consulting](http://attalitech.com/)). ## Motivation & alternatives using native Shiny The initial release of this package was announced [on my blog](https://deanattali.com/2015/04/23/shinyjs-r-package/) and discusses these topics. ## Contributions If you have any suggestions or feedback, I would love to hear about it. You can either [message me directly](https://deanattali.com/contact), [open an issue](https://github.com/daattali/shinyjs/issues) if you want to request a feature/report a bug, or make a pull request if you can contribute. I'd like to give special thanks to the Shiny developers, especially [Joe Cheng](http://www.joecheng.com/) for always answering all my Shiny questions. Lastly, if you find shinyjs useful, please consider [supporting me](https://www.paypal.me/daattali/20) for the countless hours I've spent building, documenting, and supporting this package :) shinyjs/inst/doc/shinyjs.html0000644000176200001440000010750113606742006016050 0ustar liggesusers Package shinyjs

Package shinyjs

Dean Attali

2020-01-12

shinyjs

shinyjs

Easily improve the user experience of your Shiny apps in seconds

Official website · Copyright 2016 Dean Attali

Donate Build Status CRAN version


shinyjs lets you perform common useful JavaScript operations in Shiny apps that will greatly improve your apps without having to know any JavaScript.

Examples include: hiding an element, disabling an input, resetting an input back to its original value, delaying code execution by a few seconds, and many more useful functions for both the end user and the developer. shinyjs can also be used to easily call your own custom JavaScript functions from R.

shinyjs is under the AGPL-3 license. For a commercial license, please contact me. If you find shinyjs useful, please consider supporting its development!

Table of contents

Demos and tutorials

Overview of main functions

Note: In order to use any shinyjs function in a Shiny app, you must first call useShinyjs() anywhere in the app’s UI.

Function Description
show/hide/toggle Display or hide an element (optionally with an animation).
hidden Initialize a Shiny tag as invisible (can be shown later with a call to show).
enable/disable/toggleState Enable or disable an input element, such as a button or a text input.
disabled Initialize a Shiny input as disabled.
reset Reset a Shiny input widget back to its original value.
delay Execute R code (including any shinyjs functions) after a specified amount of time.
alert Show a message to the user.
click Simulate a click on a button.
html Change the text/HTML of an element.
onclick Run R code when a specific element is clicked. Was originally developed with the sole purpose of running a shinyjs function when an element is clicked, though any R code can be used.
onevent Similar to onclick, but can be used with many other events instead of click (for example, listen for a key press, mouse hover, etc).
addClass/removeClass/toggleClass add or remove a CSS class from an element.
runjs Run arbitrary JavaScript code.
extendShinyjs Allows you to write your own JavaScript functions and use shinyjs to call them as if they were regular R code. More information is available in the section “Calling your own JavaScript functions from R” below.

Functions that help you during Shiny app development

Function Description
runcodeUI+runcodeServer Adds a text input to your app that lets you run arbitrary R code live.
showLog Print any JavaScript console.log() messages in the R console, to make it easier and quicker to debug apps without having to open the JS console.
logjs Print a message to the JavaScript console (mainly used for debugging purposes).
inlineCSS Easily add inline CSS to a Shiny app.

Check out the shinyjs demo app to see some of these in action, or install shinyjs and run shinyjs::runExample() to see more demos.

Installation

To install the stable CRAN version:

install.packages("shinyjs")

To install the latest development version from GitHub:

install.packages("devtools")
devtools::install_github("daattali/shinyjs")

How to use

A typical Shiny app has a UI portion and a server portion. Before using most shinyjs functions, you need to call useShinyjs() in the app’s UI. It’s best to include it near the top as a convention.

Here is a minimal Shiny app that uses shinyjs:

library(shiny)
library(shinyjs)

ui <- fluidPage(
  useShinyjs(),  # Include shinyjs

  actionButton("button", "Click me"),
  textInput("text", "Text")
)

server <- function(input, output) {
  observeEvent(input$button, {
    toggle("text")  # toggle is a shinyjs function
  })
}

shinyApp(ui, server)

This is how most Shiny apps should initialize shinyjs - by calling useShinyjs() near the top of the UI.

However, if you use shinyjs in any of the following cases:

  • In Shiny dashboards (built using the shinydashboard package)
  • In Shiny apps that use a navbarPage layout
  • In Rmd documents
  • In Shiny apps that manually build the user interface with an HTML file or template (instead of using Shiny’s UI functions)

Then you should see the Including shinyjs in different types of apps document.

If your Shiny app doesn’t fall into any of these categories, then the above code sample should be enough to get your started with including shinyjs in your app.

Basic use case - complete working example

See the shinyjs example app walk-through document for a step-by-step guide on how to add a variety of shinyjs features to a simple app in order to make it more user friendly.

Calling your own JavaScript functions from R

You can also use shinyjs to add your own JavaScript functions that can be called from R as if they were regular R functions using extendShinyjs. This is only suitable for advanced users who are familiar with JavaScript and wish to facilitate the communication between R and JavaScript.

To learn about this feature and see how useful it can be, see the extendShinyjs: Calling your own JavaScript functions from R document.

FAQ and extra tricks

There are several questions that pop up very frequently in my email or on StackOverflow about “How do I use shinyjs to do ___?” Here is a list of a few of these common questions with links to a solution that could be useful. Note that all of these require using extendShinyjs().

I also keep a long list of various Shiny tips & tricks for solving common Shiny problems, many of which make use of shinyjs.

More resources

This document is meant to serve as a high overview of shinyjs. There are three more documents provided in shinyjs to teach you various aspects of the package:

If you need help with shinyjs, a good place to start is to try to get help from the community. I suggest browsing the shinyjs tag on StackOverflow or asking your own question there. You can also try getting help on the RStudio Community forums.

If you still can’t get an answer to your question, you can contact me. However, because of the high volume of support emails I receive daily, I can only provide support for a fee (as part of my Shiny consulting).

Motivation & alternatives using native Shiny

The initial release of this package was announced on my blog and discusses these topics.

Contributions

If you have any suggestions or feedback, I would love to hear about it. You can either message me directly, open an issue if you want to request a feature/report a bug, or make a pull request if you can contribute.

I’d like to give special thanks to the Shiny developers, especially Joe Cheng for always answering all my Shiny questions.

Lastly, if you find shinyjs useful, please consider supporting me for the countless hours I’ve spent building, documenting, and supporting this package :)

shinyjs/inst/doc/shinyjs.R0000644000176200001440000000020413606742002015271 0ustar liggesusers## ----setup, echo = FALSE, message = FALSE-------------------------------- knitr::opts_chunk$set(tidy = FALSE, comment = "#>") shinyjs/inst/doc/shinyjs-usage.Rmd0000644000176200001440000001627213606741152016735 0ustar liggesusers--- title: "Including shinyjs in different types of apps" author: "Dean Attali" date: "`r Sys.Date()`" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Including shinyjs in different types of apps} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r setup, echo = FALSE, message = FALSE} knitr::opts_chunk$set(tidy = FALSE, comment = "#>") ``` # Including shinyjs in different types of apps ## Table of contents - [Basic use of shinyjs](#usage-basic) - [Using shinyjs in Shiny Dashboards](#usage-dashboard) - [Using shinyjs with navbarPage layout](#usage-navbarpage) - [Using shinyjs in R Markdown documents](#usage-rmd) - [Rmd documents with Tabbed Sections](#usage-tabbed) - [Rmd documents using `shiny_prerendered` engine](#usage-prerendered) - [Using shinyjs when the user interface is built using an HTML file](#usage-html)

Basic use of shinyjs

A typical Shiny app has a UI portion and a server portion. Before using most shinyjs functions, you need to call `useShinyjs()` in the app's UI. It's best to include it near the top as a convention. Here is a minimal Shiny app that uses `shinyjs`: ``` library(shiny) library(shinyjs) ui <- fluidPage( useShinyjs(), # Include shinyjs actionButton("button", "Click me"), textInput("text", "Text") ) server <- function(input, output) { observeEvent(input$button, { toggle("text") # toggle is a shinyjs function }) } shinyApp(ui, server) ``` This is how most Shiny apps should initialize `shinyjs` - by calling `useShinyjs()` near the top of the UI. However, if you use shinyjs in any of the following cases: - In Shiny dashboards (built using the `shinydashboard` package) - In Shiny apps that use a `navbarPage` layout - In Rmd documents - In Shiny apps that manually build the user interface with an HTML file or template (instead of using Shiny's UI functions) Then the following sections will show you how you to include shinyjs.

Using shinyjs in Shiny Dashboards

`shinydashboard` is an R package that lets you create nice dashboards with Shiny. Since it has a different structure than typical Shiny apps, it can be unclear where to include the call to `useShinyjs()` in these apps. It is recommended to place the call to `useShinyjs()` in the beginning of `dashboardBody()`. For example, here is a minimal Shiny dashboard that uses `shinyjs`: ``` library(shiny) library(shinydashboard) library(shinyjs) ui <- dashboardPage( dashboardHeader(), dashboardSidebar(), dashboardBody( useShinyjs(), actionButton("button", "Click me"), div(id = "hello", "Hello!") ) ) server <- function(input, output) { observeEvent(input$button, { toggle("hello") }) } shinyApp(ui, server) ```

Using shinyjs with navbarPage layout

When creating a Shiny app that uses a `navbarPage` layout, the call to `useShinyjs()` can be placed inside any of the tabs (since the only real requirement is that it will be present *somewhere* in the UI). While having `useShinyjs()` inside the contents of any tab will work, there is another method that is preferred. You can wrap the `navbarPage` in a `tagList`, and call `useShinyjs()` within the `tagList`. This way, `shinyjs` gets set up in a way that is independent of each of the tabs. For example, here is a minimal Shiny app that uses `shinyjs` inside a `navbarPage` layout: ``` library(shiny) library(shinyjs) ui <- tagList( useShinyjs(), navbarPage( "shinyjs with navbarPage", tabPanel("tab1", actionButton("button", "Click me"), div(id = "hello", "Hello!")), tabPanel("tab2") ) ) server <- function(input, output, session) { observeEvent(input$button, { toggle("hello") }) } shinyApp(ui, server) ```

Using shinyjs in R Markdown documents

It is possible to embed Shiny components in an R Markdown document, resulting in interactive R Markdown documents. More information on how to use these documents is available [on the R Markdown website](https://bookdown.org/yihui/rmarkdown/shiny-documents.html). Even though interactive documents don't explicitly specify a UI and a server, using `shinyjs` is still easy: simply call `useShinyjs(rmd = TRUE)` (note the `rmd = TRUE` argument). For example, the following code can be used inside an R Markdown code chunk (assuming the Rmd document is set up with `runtime: shiny` as the link above describes): ``` library(shinyjs) useShinyjs(rmd = TRUE) actionButton("button", "Click me") div(id = "hello", "Hello!") observeEvent(input$button, { toggle("hello") }) ```

Rmd documents with Tabbed Sections

If the Rmd file makes use of [Tabbed Sections](http://rmarkdown.rstudio.com/html_document_format.html#tabbed_sections) (using `{.tabset}`), then you should include the call to `useShinyjs(rmd = TRUE)` before the tabset definition, near the beginning of the file.

Rmd documents using `shiny_prerendered` engine

If you're using the [`shiny_prerendered` Rmd format](https://bookdown.org/yihui/rmarkdown/shiny-documents.html), you need to include the following code in the beginning of your Rmd file, just after the YAML header (you need to remove the spaces between the backticks to make this code work): ```` ` ` `{r, echo=FALSE} shiny::addResourcePath("shinyjs", system.file("srcjs", package = "shinyjs")) ` ` ` ` ` `{r, context="server"} shinyjs::useShinyjs(html = TRUE) ` ` ` ````

Using shinyjs when the user interface is built using an HTML file/template

While most Shiny apps use Shiny's functions to build a user interface to the app, it is possible to build the UI with an HTML template, [as RStudio shows in this article](http://shiny.rstudio.com/articles/templates.html). In this case, you simply need to add `{{ useShinyjs() }}` somewhere in the template, preferably inside the `...` tags. A similar way to create your app's UI with HTML is to write it entirely in HTML (without templates), [as RStudio shows in this article](http://shiny.rstudio.com/articles/html-ui.html). Building Shiny apps like this is much more complicated and should only be used if you're very comfortable with HTML. Using `shinyjs` in these apps is possible but it works a little differently since there is no `ui.R` to call `useShinyjs()` from. There are three simple steps to take in order to use `shinyjs` in these apps: - Create a `global.R` file in the same directory as your `server.R`, and add the following line to the file: shiny::addResourcePath("shinyjs", system.file("srcjs", package = "shinyjs")) - In the `index.html` file you need to load a special JavaScript file named `shinyjs/inject.js`. You do this by adding the following line to the HTML's `` tag: `` - In your server function (the `shinyServer` function) you need to call `useShinyjs(html = TRUE)` After adding these three lines to your code, you can use all `shinyjs` functions as usual. shinyjs/inst/doc/shinyjs-example.html0000644000176200001440000005742713606742001017507 0ustar liggesusers shinyjs example app walk-through

shinyjs example app walk-through

Dean Attali

2020-01-12

shinyjs example app walk-through

This document provides a step-by-step guide on how to add a variety of shinyjs features to a simple app in order to make it more user friendly.

You can view the final Shiny app developed in this simple example here.

Suppose we want to have a simple Shiny app that collects a user’s basic information (name, age, company) and submits it, along with the time of submission. Here is a very simple implementation of such an app (nothing actually happens when the user “submits”).

library(shiny)
shinyApp(
  ui = fluidPage(
    div(id = "myapp",
      h2("shinyjs demo"),
      textInput("name", "Name", ""),
      numericInput("age", "Age", 30),
      textInput("company", "Company", ""),
      p("Timestamp: ", span(date())),
      actionButton("submit", "Submit")
    )
  ),
  
  server = function(input, output) {
  }
)

Note that I generally don’t like running Shiny apps like this and prefer to declare the UI and server separately, but this style is used here for brevity.

Here is what that app would look like

Demo app

Add shinyjs features

Now suppose we want to add a few features to the app to make it a bit more user-friendly. First we need to set up the app to use shinyjs by making a call to useShinyjs() in the Shiny app’s UI.

Here are 7 features we’ll add to the app, each followed with the code to implement it using shinyjs:

1. The “Name” field is mandatory and thus the “Submit” button should not be enabled if there is no name

In the server portion, add the following code

observe({
  if (is.null(input$name) || input$name == "") {
    shinyjs::disable("submit")
  } else {
    shinyjs::enable("submit")
  }
})

Or instead you can use the toggleState function and pass it a condition:

observe({
  shinyjs::toggleState("submit", !is.null(input$name) && input$name != "")
})

You can use the optional condition in some other functions as well, which can be very useful to make your code shorter and more understandable.

2. The “Age” and “Company” fields are optional and we want to have the ability to hide that section of the form

First, we need to section off the “Age” and “Company” elements into their own section, so we surround them with a div

div(id = "advanced",
  numericInput("age", "Age", 30),
  textInput("company", "Company", "")
)

We also need to add a link in the UI that will be used to hide/show the section

a(id = "toggleAdvanced", "Show/hide advanced info")

Lastly, we need to tell Shiny to show/hide the section when the link is clicked by adding this code to the server

shinyjs::onclick("toggleAdvanced",
                  shinyjs::toggle(id = "advanced", anim = TRUE))

3. Similarly, since we don’t really care about “Age” and “Company” too much, we want to hide them initially when the form loads

Simply surround the section we want to hide initially with shinyjs::hidden

shinyjs::hidden(
  div(id = "advanced",
    ...
))

4. The user should be able to update the “Timestamp” in case he spends way too long filling out the form (not very realistic here, and the timestamp should ideally be determined when the button is clicked, but it’s good enough for illustration purposes)

First, we need to add an “Update” link to click on, and we need to give the element showing the time an id so that we can refer to it later when we want to change its contents.

To do that, replace p("Timestamp: ", span(date())) with

p("Timestamp: ", span(id = "time", date()), a(id = "update", "Update"))

Now we need to tell Shiny what to do when “Update” is clicked by adding this to the server

shinyjs::onclick("update", shinyjs::html("time", date()))

5. Some users may find it hard to read the small text in the app, so there should be an option to increase the font size

First, we need to add checkbox to the UI

checkboxInput("big", "Bigger text", FALSE)

In order to make the text bigger, we will use CSS. So let’s add an appropriate CSS rule by adding this code to the UI

shinyjs::inlineCSS(list(.big = "font-size: 2em"))

Lastly, we want the text to be big or small depending on whether the checkbox is checked by adding this code to the server

observe({
  if (input$big) {
    shinyjs::addClass("myapp", "big")
  } else {
    shinyjs::removeClass("myapp", "big")
  }
})

Or, again, we can use the toggleClass function with the condition argument:

observe({
  shinyjs::toggleClass("myapp", "big", input$big)
})

6. Give the user a “Thank you” message upon submission

Simply add the following to the server

observeEvent(input$submit, {
  shinyjs::alert("Thank you!")
})

7. Allow the user to reset the form

First let’s add a button to the UI

actionButton("reset", "Reset form")

And when the button is clicked, reset the form

observeEvent(input$reset, {
  shinyjs::reset("myapp")
})

Final code

The final code looks like this

library(shiny)
shinyApp(
  ui = fluidPage(
    shinyjs::useShinyjs(),
    shinyjs::inlineCSS(list(.big = "font-size: 2em")),
    div(id = "myapp",
        h2("shinyjs demo"),
        checkboxInput("big", "Bigger text", FALSE),
        textInput("name", "Name", ""),
        a(id = "toggleAdvanced", "Show/hide advanced info", href = "#"),
        shinyjs::hidden(
          div(id = "advanced",
            numericInput("age", "Age", 30),
            textInput("company", "Company", "")
          )
        ),
        p("Timestamp: ",
          span(id = "time", date()),
          a(id = "update", "Update", href = "#")
        ),
        actionButton("submit", "Submit"),
        actionButton("reset", "Reset form")
    )
  ),
  
  server = function(input, output) {
    observe({
      shinyjs::toggleState("submit", !is.null(input$name) && input$name != "")
    })
    
    shinyjs::onclick("toggleAdvanced",
                     shinyjs::toggle(id = "advanced", anim = TRUE))    
    
    shinyjs::onclick("update", shinyjs::html("time", date()))
    
    observe({
      shinyjs::toggleClass("myapp", "big", input$big)
    })
    
    observeEvent(input$submit, {
      shinyjs::alert("Thank you!")
    })
    
    observeEvent(input$reset, {
      shinyjs::reset("myapp")
    })    
  }
)

You can view the final app here.

shinyjs/inst/doc/shinyjs-extend.R0000644000176200001440000000020413606742001016555 0ustar liggesusers## ----setup, echo = FALSE, message = FALSE-------------------------------- knitr::opts_chunk$set(tidy = FALSE, comment = "#>") shinyjs/inst/doc/shinyjs-usage.html0000644000176200001440000003112213606742002017141 0ustar liggesusers Including shinyjs in different types of apps

Including shinyjs in different types of apps

Dean Attali

2020-01-12

Including shinyjs in different types of apps

Table of contents

Basic use of shinyjs

A typical Shiny app has a UI portion and a server portion. Before using most shinyjs functions, you need to call useShinyjs() in the app’s UI. It’s best to include it near the top as a convention.

Here is a minimal Shiny app that uses shinyjs:

library(shiny)
library(shinyjs)

ui <- fluidPage(
  useShinyjs(),  # Include shinyjs

  actionButton("button", "Click me"),
  textInput("text", "Text")
)

server <- function(input, output) {
  observeEvent(input$button, {
    toggle("text")  # toggle is a shinyjs function
  })
}

shinyApp(ui, server)

This is how most Shiny apps should initialize shinyjs - by calling useShinyjs() near the top of the UI.

However, if you use shinyjs in any of the following cases:

  • In Shiny dashboards (built using the shinydashboard package)
  • In Shiny apps that use a navbarPage layout
  • In Rmd documents
  • In Shiny apps that manually build the user interface with an HTML file or template (instead of using Shiny’s UI functions)

Then the following sections will show you how you to include shinyjs.

Using shinyjs in Shiny Dashboards

shinydashboard is an R package that lets you create nice dashboards with Shiny. Since it has a different structure than typical Shiny apps, it can be unclear where to include the call to useShinyjs() in these apps. It is recommended to place the call to useShinyjs() in the beginning of dashboardBody(). For example, here is a minimal Shiny dashboard that uses shinyjs:

library(shiny)
library(shinydashboard)
library(shinyjs)

ui <- dashboardPage(
  dashboardHeader(),
  dashboardSidebar(),
  dashboardBody(
    useShinyjs(),
    actionButton("button", "Click me"),
    div(id = "hello", "Hello!")
  )
)

server <- function(input, output) {
  observeEvent(input$button, {
    toggle("hello")
  })
}

shinyApp(ui, server)

Using shinyjs with navbarPage layout

When creating a Shiny app that uses a navbarPage layout, the call to useShinyjs() can be placed inside any of the tabs (since the only real requirement is that it will be present somewhere in the UI). While having useShinyjs() inside the contents of any tab will work, there is another method that is preferred. You can wrap the navbarPage in a tagList, and call useShinyjs() within the tagList. This way, shinyjs gets set up in a way that is independent of each of the tabs. For example, here is a minimal Shiny app that uses shinyjs inside a navbarPage layout:

library(shiny)
library(shinyjs)

ui <- tagList(
  useShinyjs(),
  navbarPage(
    "shinyjs with navbarPage",
    tabPanel("tab1",
             actionButton("button", "Click me"),
             div(id = "hello", "Hello!")),
    tabPanel("tab2")
  )
)

server <- function(input, output, session) {
  observeEvent(input$button, {
    toggle("hello")
  })
}

shinyApp(ui, server)

Using shinyjs in R Markdown documents

It is possible to embed Shiny components in an R Markdown document, resulting in interactive R Markdown documents. More information on how to use these documents is available on the R Markdown website. Even though interactive documents don’t explicitly specify a UI and a server, using shinyjs is still easy: simply call useShinyjs(rmd = TRUE) (note the rmd = TRUE argument). For example, the following code can be used inside an R Markdown code chunk (assuming the Rmd document is set up with runtime: shiny as the link above describes):

library(shinyjs)

useShinyjs(rmd = TRUE)
actionButton("button", "Click me")
div(id = "hello", "Hello!")

observeEvent(input$button, {
 toggle("hello")
})

Rmd documents with Tabbed Sections

If the Rmd file makes use of Tabbed Sections (using {.tabset}), then you should include the call to useShinyjs(rmd = TRUE) before the tabset definition, near the beginning of the file.

Rmd documents using shiny_prerendered engine

If you’re using the shiny_prerendered Rmd format, you need to include the following code in the beginning of your Rmd file, just after the YAML header (you need to remove the spaces between the backticks to make this code work):

` ` `{r, echo=FALSE}
shiny::addResourcePath("shinyjs", system.file("srcjs", package = "shinyjs"))
` ` `
` ` `{r, context="server"}
shinyjs::useShinyjs(html = TRUE)
` ` `
<script src="shinyjs/inject.js"></script>

Using shinyjs when the user interface is built using an HTML file/template

While most Shiny apps use Shiny’s functions to build a user interface to the app, it is possible to build the UI with an HTML template, as RStudio shows in this article. In this case, you simply need to add {{ useShinyjs() }} somewhere in the template, preferably inside the <head>...</head> tags.

A similar way to create your app’s UI with HTML is to write it entirely in HTML (without templates), as RStudio shows in this article. Building Shiny apps like this is much more complicated and should only be used if you’re very comfortable with HTML. Using shinyjs in these apps is possible but it works a little differently since there is no ui.R to call useShinyjs() from. There are three simple steps to take in order to use shinyjs in these apps:

  • Create a global.R file in the same directory as your server.R, and add the following line to the file:

      shiny::addResourcePath("shinyjs", system.file("srcjs", package = "shinyjs"))
  • In the index.html file you need to load a special JavaScript file named shinyjs/inject.js. You do this by adding the following line to the HTML’s <head> tag:

      `<script src="shinyjs/inject.js"></script>`
  • In your server function (the shinyServer function) you need to call useShinyjs(html = TRUE)

After adding these three lines to your code, you can use all shinyjs functions as usual.